/*global $:false, perform:false, PerformVideoVjs:false, geoLocationName:false */
/*jshint strict:true, camelcase:true, curly:true, eqeqeq:true, immed:true, indent:2, latedef:true, newcap:true, noarg:true, noempty:true, nonew:true, quotmark:single, undef:true, unused:true, trailing:true */
(function(window, document, undefined) {
  'use strict';

  var Bein = window.Bein = {
  
    dateFormat : 'change me',
    device : 'desktop',
    forceFullSite : false,
    lang : 'ar',
    module : {},
    platform : 'desktop',
    production : true,
    user : {
      data : perform.getUserDetails() || {},
      isLoggedIn : perform.isLoggedIn() || false,
      isSubscribed : perform.isSubscribed() || false
    },

    deviceCheck : function () {
      var innerWidth = $(window).innerWidth();
      var device = 'desktop';
      if (innerWidth <= 640) {
        device = 'phone';
      } else if ((innerWidth > 640) && (innerWidth <= 768)) {
        device = 'tablet';
      }
      this.device = device;
    },
    
    
    
    
    
    
    
      
    /**
     * Bein initialisation
     */
    init : function () {
      var browser = navigator.userAgent;
      var platform = navigator.platform;
      var iosRegex = /(iPhone|iPod|iPad|IOS)/i;
      
      this.forceFullSite = (perform.getCookie('forceFullSite') === '1') ? true : false;

      if (iosRegex.test(platform) || iosRegex.test(browser)) {
        this.platform = 'ios';
        this.device = ((/iPhone|iPod/.test(browser)) ? 'phone' : 'tablet');
      } else if (/Android/i.test(browser)) {
        this.platform = 'android';
        this.device = ((/mobile/i.test(browser)) ? 'phone' : 'tablet');
      } else {
        this.deviceCheck();
      }
    },
    
    /**
     * Handles "Full site" and "Mobile site" user switching of responsive design on/off                                                                                                                         
     * @param {boolean} mode - 0 = turn off responsive, 1 = turn on responsive
     */
    switchMobile : function (mode) {
      if (mode === 0) {
        $('body').removeClass('m');
        $('#full-site').hide();
        $('#mobile-site').show();
        perform.setCookie('forceFullSite', '1');
        this.forceFullSite = true;
      } else  {
        $('body').addClass('m');
        $('#mobile-site').hide();
        $('#full-site').show();
        perform.setCookie('forceFullSite', '0');
        this.forceFullSite = false;
      }
      if (document.getElementById('centerpiece')) {
        window.Bein.module.feature.init();
      }
      return false;
    },
    
    /**
     * If AR version on mobile, swap sidebar with main content to match non-AR version                                                                                                                        
     */
    moveSidebarToTheBottom : function () {
     $("#mainContent > .content-wrapper > aside").before($("#mainContent > .content-wrapper > div.pd-lt-10"));
    },
    
    /**
     * Tracking function. Call it after your ajax is finished successfully.
     */
    track : function () {},
      
    goto : function (url) {
      window.location.href = url;
    }

  };

  window.Bein.init();
})(window, document);


/**
 * Document ready
 */
$(document).ready(function () {
  'use strict';

  window.Bein.settings.init();
  window.Bein.phoneSettings();
  
  window.Bein.module.popover.init();
  window.Bein.module.timezone.init();
  
  //subscribe banner launch
  if (typeof BeinSubscribeBannerCheck !== 'undefined') {
    if (BeinSubscribeBannerCheck === true) {
      if (Bein.user.isSubscribed === false) {
        $('.video-player-wrapper').empty();
        $('.video-player-wrapper').css('background-image', 'url()');
        if (Bein.device !== 'phone') {
          $('#subscribe-banner').jqm({modal: true});
          $('#subscribe-banner').jqmShow();
        }
      } else {
        if (typeof PerformVideoVjs !== 'undefined') {
          PerformVideoVjs.play()
        }
      }
    }
  }
  if (Bein.user.isSubscribed === true) {
    // remove secure lock icon from video articles
    $('.paid-1').removeClass('paid-1');
  }
  
  //check user login status and show proper button in header
  if (Bein.user.isLoggedIn === true) {
    if (Bein.device === 'phone') {
      $('.logout.gr-mobile').show();
      $('.login.gr-mobile').hide();
    } else {  
      $('.logged-in').show();
  	  $('.not-logged-in').hide();
    }  
  } else {
    if (Bein.device === 'phone' || Bein.device === 'tablet') {
      var redirectElements = document.getElementsByName('login.successRedirectUrl');
      for (var i = 0; i < redirectElements.length; i++) {
        redirectElements[i].setAttribute('value', '/home');
      }
    }
  }
  $('.not-logged-in').click(function (e){
    if (Bein.device !== 'phone') {
      e.preventDefault();
      $('#subscribe-banner').jqm({modal: true});
      $('#subscribe-banner').jqmShow();
      return false;
    }
    
  });

  //device width resize checking  
  $(window).bind('resize', function () {
    window.Bein.deviceCheck();
    window.Bein.phoneSettings();
  });
    
  if ( (Bein.device === 'phone' || Bein.device === 'tablet') && Bein.lang === "ar") {
    window.Bein.moveSidebarToTheBottom(); 
  }
  
});

var geolocation = {
  'AD': { countryCode: 'AD', name: 'Andorra', currency: 'USD'},
  'AE': { countryCode: 'AE', name: 'United Arab Emirates', currency: 'USD'},
  'AF': { countryCode: 'AF', name: 'Afghanistan', currency: 'USD'},
  'AG': { countryCode: 'AG', name: 'Antigua And Barbuda', currency: 'USD'},
  'AI': { countryCode: 'AI', name: 'Anguilla', currency: 'USD'},
  'AL': { countryCode: 'AL', name: 'Albania', currency: 'USD'},
  'AM': { countryCode: 'AM', name: 'Armenia', currency: 'USD'},
  'AN': { countryCode: 'AN', name: 'Netherlands Antilles', currency: 'USD'},
  'AO': { countryCode: 'AO', name: 'Angola', currency: 'USD'},
  'AQ': { countryCode: 'AQ', name: 'Antarctica', currency: 'USD'},
  'AR': { countryCode: 'AR', name: 'Argentina', currency: 'USD'},
  'AS': { countryCode: 'AS', name: 'American Samoa', currency: 'USD'},
  'AT': { countryCode: 'AT', name: 'Austria', currency: 'USD'},
  'AU': { countryCode: 'AU', name: 'Australia', currency: 'USD'},
  'AW': { countryCode: 'AW', name: 'Aruba', currency: 'USD'},
  'AX': { countryCode: 'AX', name: '?land Islands', currency: 'USD'},
  'AZ': { countryCode: 'AZ', name: 'Azerbaijan', currency: 'USD'},
  'BA': { countryCode: 'BA', name: 'Bosnia And Herzegovina', currency: 'USD'},
  'BB': { countryCode: 'BB', name: 'Barbados', currency: 'USD'},
  'BD': { countryCode: 'BD', name: 'Bangladesh', currency: 'USD'},
  'BE': { countryCode: 'BE', name: 'Belgium', currency: 'USD'},
  'BF': { countryCode: 'BF', name: 'Burkina Faso', currency: 'USD'},
  'BG': { countryCode: 'BG', name: 'Bulgaria', currency: 'USD'},
  'BH': { countryCode: 'BH', name: 'Bahrain', currency: 'USD'},
  'BI': { countryCode: 'BI', name: 'Burundi', currency: 'USD'},
  'BJ': { countryCode: 'BJ', name: 'Benin', currency: 'USD'},
  'BL': { countryCode: 'BL', name: 'Saint Barthélemy', currency: 'USD'},
  'BM': { countryCode: 'BM', name: 'Bermuda', currency: 'USD'},
  'BN': { countryCode: 'BN', name: 'Brunei Darussalam', currency: 'USD'},
  'BO': { countryCode: 'BO', name: 'Bolivia', currency: 'USD'},
  'BQ': { countryCode: 'BQ', name: 'Bonaire, Sint Eustatius and Saba', currency: 'USD'},
  'BR': { countryCode: 'BR', name: 'Brazil', currency: 'USD'},
  'BS': { countryCode: 'BS', name: 'Bahamas', currency: 'USD'},
  'BT': { countryCode: 'BT', name: 'Bhutan', currency: 'USD'},
  'BV': { countryCode: 'BV', name: 'Bouvet Island', currency: 'USD'},
  'BW': { countryCode: 'BW', name: 'Botswana', currency: 'USD'},
  'BY': { countryCode: 'BY', name: 'Belarus', currency: 'USD'},
  'BZ': { countryCode: 'BZ', name: 'Belize', currency: 'USD'},
  'CA': { countryCode: 'CA', name: 'Canada', currency: 'USD'},
  'CC': { countryCode: 'CC', name: 'Cocos (Keeling) Islands', currency: 'USD'},
  'CD': { countryCode: 'CD', name: 'Congo, Republic Of The', currency: 'USD'},
  'CF': { countryCode: 'CF', name: 'Central African Republic', currency: 'USD'},
  'CG': { countryCode: 'CG', name: 'Congo, Democratic Republic Of The', currency: 'USD'},
  'CI': { countryCode: 'CI', name: 'Cote Divoire', currency: 'USD'},
  'CK': { countryCode: 'CK', name: 'Cook Islands', currency: 'USD'},
  'CL': { countryCode: 'CL', name: 'Chile', currency: 'USD'},
  'CM': { countryCode: 'CM', name: 'Cameroon', currency: 'USD'},
  'CN': { countryCode: 'CN', name: 'China', currency: 'USD'},
  'CO': { countryCode: 'CO', name: 'Colombia', currency: 'USD'},
  'CR': { countryCode: 'CR', name: 'Costa Rica', currency: 'USD'},
  'CU': { countryCode: 'CU', name: 'Cuba', currency: 'USD'},
  'CV': { countryCode: 'CV', name: 'Cape Verde', currency: 'USD'},
  'CW': { countryCode: 'CW', name: 'Curaçao', currency: 'USD'},
  'CX': { countryCode: 'CX', name: 'Christmas Islands', currency: 'USD'},
  'CY': { countryCode: 'CY', name: 'Cyprus', currency: 'USD'},
  'CZ': { countryCode: 'CZ', name: 'Czech Republic', currency: 'USD'},
  'DE': { countryCode: 'DE', name: 'Germany', currency: 'USD'},
  'DJ': { countryCode: 'DJ', name: 'Djibouti', currency: 'USD'},
  'DK': { countryCode: 'DK', name: 'Denmark', currency: 'USD'},
  'DM': { countryCode: 'DM', name: 'Dominica', currency: 'USD'},
  'DO': { countryCode: 'DO', name: 'Dominican Republic', currency: 'USD'},
  'DZ': { countryCode: 'DZ', name: 'Algeria', currency: 'USD'},
  'EC': { countryCode: 'EC', name: 'Ecuador', currency: 'USD'},
  'EE': { countryCode: 'EE', name: 'Estonia', currency: 'USD'},
  'EG': { countryCode: 'EG', name: 'Egypt', currency: 'USD'},
  'EH': { countryCode: 'EH', name: 'Western Sahara', currency: 'USD'},
  'ER': { countryCode: 'ER', name: 'Eritrea', currency: 'USD'},
  'ES': { countryCode: 'ES', name: 'Spain', currency: 'USD'},
  'ET': { countryCode: 'ET', name: 'Ethiopia', currency: 'USD'},
  'EU': { countryCode: 'EU', name: 'Europe (Country Unknown)', currency: 'USD'},
  'FI': { countryCode: 'FI', name: 'Finland', currency: 'USD'},
  'FJ': { countryCode: 'FJ', name: 'Fiji', currency: 'USD'},
  'FK': { countryCode: 'FK', name: 'Falkland Islands (Malvinas)', currency: 'USD'},
  'FM': { countryCode: 'FM', name: 'Federated States Of Micronesia', currency: 'USD'},
  'FO': { countryCode: 'FO', name: 'Faroe Islands', currency: 'USD'},
  'FR': { countryCode: 'FR', name: 'France', currency: 'USD'},
  'FX': { countryCode: 'FX', name: 'France, Metropolitan', currency: 'USD'},
  'GA': { countryCode: 'GA', name: 'Gabon', currency: 'USD'},
  'GB': { countryCode: 'GB', name: 'United Kingdom', currency: 'USD'},
  'GD': { countryCode: 'GD', name: 'Grenada', currency: 'USD'},
  'GE': { countryCode: 'GE', name: 'Georgia', currency: 'USD'},
  'GF': { countryCode: 'GF', name: 'French Guiana', currency: 'USD'},
  'GG': { countryCode: 'GG', name: 'Guernsey', currency: 'USD'},
  'GH': { countryCode: 'GH', name: 'Ghana', currency: 'USD'},
  'GI': { countryCode: 'GI', name: 'Gibraltar', currency: 'USD'},
  'GL': { countryCode: 'GL', name: 'Greenland', currency: 'USD'},
  'GM': { countryCode: 'GM', name: 'Gambia', currency: 'USD'},
  'GN': { countryCode: 'GN', name: 'Guinea', currency: 'USD'},
  'GP': { countryCode: 'GP', name: 'Guadeloupe', currency: 'USD'},
  'GQ': { countryCode: 'GQ', name: 'Equatorial Guinea', currency: 'USD'},
  'GR': { countryCode: 'GR', name: 'Greece', currency: 'USD'},
  'GS': { countryCode: 'GS', name: 'South Georgia And The South Sandwich Islands', currency: 'USD'},
  'GT': { countryCode: 'GT', name: 'Guatemala', currency: 'USD'},
  'GU': { countryCode: 'GU', name: 'Guam', currency: 'USD'},
  'GW': { countryCode: 'GW', name: 'Guinea-Bissau', currency: 'USD'},
  'GY': { countryCode: 'GY', name: 'Guyana', currency: 'USD'},
  'HK': { countryCode: 'HK', name: 'Hong Kong', currency: 'USD'},
  'HM': { countryCode: 'HM', name: 'Heard And Mc Donald Islands', currency: 'USD'},
  'HN': { countryCode: 'HN', name: 'Honduras', currency: 'USD'},
  'HR': { countryCode: 'HR', name: 'Croatia', currency: 'USD'},
  'HT': { countryCode: 'HT', name: 'Haiti', currency: 'USD'},
  'HU': { countryCode: 'HU', name: 'Hungary', currency: 'USD'},
  'CH': { countryCode: 'CH', name: 'Switzerland', currency: 'USD'},
  'ID': { countryCode: 'ID', name: 'Indonesia', currency: 'USD'},
  'IE': { countryCode: 'IE', name: 'Ireland', currency: 'USD'},
  'IL': { countryCode: 'IL', name: 'Israel', currency: 'USD'},
  'IM': { countryCode: 'IM', name: 'Isle Of Man', currency: 'USD'},
  'IN': { countryCode: 'IN', name: 'India', currency: 'USD'},
  'IO': { countryCode: 'IO', name: 'British Indian Ocean Territory', currency: 'USD'},
  'IQ': { countryCode: 'IQ', name: 'Iraq', currency: 'USD'},
  'IR': { countryCode: 'IR', name: 'Iran', currency: 'USD'},
  'IS': { countryCode: 'IS', name: 'Iceland', currency: 'USD'},
  'IT': { countryCode: 'IT', name: 'Italy', currency: 'USD'},
  'JE': { countryCode: 'JE', name: 'Jersey', currency: 'USD'},
  'JM': { countryCode: 'JM', name: 'Jamaica', currency: 'USD'},
  'JO': { countryCode: 'JO', name: 'Jordan', currency: 'USD'},
  'JP': { countryCode: 'JP', name: 'Japan', currency: 'USD'},
  'KE': { countryCode: 'KE', name: 'Kenya', currency: 'USD'},
  'KG': { countryCode: 'KG', name: 'Kyrgyzstan', currency: 'USD'},
  'KH': { countryCode: 'KH', name: 'Cambodia', currency: 'USD'},
  'KI': { countryCode: 'KI', name: 'Kiribati', currency: 'USD'},
  'KM': { countryCode: 'KM', name: 'Comoros', currency: 'USD'},
  'KN': { countryCode: 'KN', name: 'Saint Kitts And Nevis', currency: 'USD'},
  'KP': { countryCode: 'KP', name: 'Democratic Peoples Republic Of Korea', currency: 'USD'},
  'KR': { countryCode: 'KR', name: 'Republic Of Korea', currency: 'USD'},
  'KW': { countryCode: 'KW', name: 'Kuwait', currency: 'USD'},
  'KY': { countryCode: 'KY', name: 'Cayman Islands', currency: 'USD'},
  'KZ': { countryCode: 'KZ', name: 'Kazakstan', currency: 'USD'},
  'LA': { countryCode: 'LA', name: 'Lao Peoples Democratic Republic', currency: 'USD'},
  'LB': { countryCode: 'LB', name: 'Lebanon', currency: 'USD'},
  'LC': { countryCode: 'LC', name: 'Saint Lucia', currency: 'USD'},
  'LI': { countryCode: 'LI', name: 'Liechtenstein', currency: 'USD'},
  'LK': { countryCode: 'LK', name: 'Sri Lanka', currency: 'USD'},
  'LR': { countryCode: 'LR', name: 'Liberia', currency: 'USD'},
  'LS': { countryCode: 'LS', name: 'Lesotho', currency: 'USD'},
  'LT': { countryCode: 'LT', name: 'Lithuania', currency: 'USD'},
  'LU': { countryCode: 'LU', name: 'Luxembourg', currency: 'USD'},
  'LV': { countryCode: 'LV', name: 'Latvia', currency: 'USD'},
  'LY': { countryCode: 'LY', name: 'Libyan Arab Jamahiriya', currency: 'USD'},
  'MA': { countryCode: 'MA', name: 'Morocco', currency: 'USD'},
  'MC': { countryCode: 'MC', name: 'Monaco', currency: 'USD'},
  'MD': { countryCode: 'MD', name: 'Moldova', currency: 'USD'},
  'ME': { countryCode: 'ME', name: 'Montengro', currency: 'USD'},
  'MF': { countryCode: 'MF', name: 'Saint-Martin', currency: 'USD'},
  'MG': { countryCode: 'MG', name: 'Madagascar', currency: 'USD'},
  'MH': { countryCode: 'MH', name: 'Marshall Islands', currency: 'USD'},
  'MK': { countryCode: 'MK', name: 'Macedonia', currency: 'USD'},
  'ML': { countryCode: 'ML', name: 'Mali', currency: 'USD'},
  'MM': { countryCode: 'MM', name: 'Myanmar', currency: 'USD'},
  'MN': { countryCode: 'MN', name: 'Mongolia', currency: 'USD'},
  'MO': { countryCode: 'MO', name: 'Macao', currency: 'USD'},
  'MP': { countryCode: 'MP', name: 'Northern Mariana Islands', currency: 'USD'},
  'MQ': { countryCode: 'MQ', name: 'Martinique', currency: 'USD'},
  'MR': { countryCode: 'MR', name: 'Mauritania', currency: 'USD'},
  'MS': { countryCode: 'MS', name: 'Montserrat', currency: 'USD'},
  'MT': { countryCode: 'MT', name: 'Malta', currency: 'USD'},
  'MU': { countryCode: 'MU', name: 'Mauritius', currency: 'USD'},
  'MV': { countryCode: 'MV', name: 'Maldives', currency: 'USD'},
  'MW': { countryCode: 'MW', name: 'Malawi', currency: 'USD'},
  'MX': { countryCode: 'MX', name: 'Mexico', currency: 'USD'},
  'MY': { countryCode: 'MY', name: 'Malaysia', currency: 'USD'},
  'MZ': { countryCode: 'MZ', name: 'Mozambique', currency: 'USD'},
  'NA': { countryCode: 'NA', name: 'Namibia', currency: 'USD'},
  'NC': { countryCode: 'NC', name: 'New Caledonia', currency: 'USD'},
  'NE': { countryCode: 'NE', name: 'Niger', currency: 'USD'},
  'NF': { countryCode: 'NF', name: 'Norfolk Island', currency: 'USD'},
  'NG': { countryCode: 'NG', name: 'Nigeria', currency: 'USD'},
  'NI': { countryCode: 'NI', name: 'Nicaragua', currency: 'USD'},
  'NL': { countryCode: 'NL', name: 'Netherlands', currency: 'USD'},
  'NO': { countryCode: 'NO', name: 'Norway', currency: 'USD'},
  'NP': { countryCode: 'NP', name: 'Nepal', currency: 'USD'},
  'NR': { countryCode: 'NR', name: 'Nauru', currency: 'USD'},
  'NU': { countryCode: 'NU', name: 'Niue', currency: 'USD'},
  'NZ': { countryCode: 'NZ', name: 'New Zealand', currency: 'USD'},
  'OM': { countryCode: 'OM', name: 'Oman', currency: 'USD'},
  'PA': { countryCode: 'PA', name: 'Panama', currency: 'USD'},
  'PE': { countryCode: 'PE', name: 'Peru', currency: 'USD'},
  'PF': { countryCode: 'PF', name: 'French Polynesia', currency: 'USD'},
  'PG': { countryCode: 'PG', name: 'Papua New Guinea', currency: 'USD'},
  'PH': { countryCode: 'PH', name: 'Philippines', currency: 'USD'},
  'PK': { countryCode: 'PK', name: 'Pakistan', currency: 'USD'},
  'PL': { countryCode: 'PL', name: 'Poland', currency: 'USD'},
  'PM': { countryCode: 'PM', name: 'St. Pierre And Miquelon', currency: 'USD'},
  'PN': { countryCode: 'PN', name: 'Pitcairn', currency: 'USD'},
  'PR': { countryCode: 'PR', name: 'Puerto Rico', currency: 'USD'},
  'PS': { countryCode: 'PS', name: 'Palestine', currency: 'USD'},
  'PT': { countryCode: 'PT', name: 'Portugal', currency: 'USD'},
  'PW': { countryCode: 'PW', name: 'Palau', currency: 'USD'},
  'PY': { countryCode: 'PY', name: 'Paraguay', currency: 'USD'},
  'QA': { countryCode: 'QA', name: 'Qatar', currency: 'USD'},
  'RE': { countryCode: 'RE', name: 'Reunion', currency: 'USD'},
  'RO': { countryCode: 'RO', name: 'Romania', currency: 'USD'},
  'RS': { countryCode: 'RS', name: 'Serbia', currency: 'USD'},
  'RU': { countryCode: 'RU', name: 'Russia', currency: 'USD'},
  'RW': { countryCode: 'RW', name: 'Rwanda', currency: 'USD'},
  'SA': { countryCode: 'SA', name: 'Saudi Arabia', currency: 'USD'},
  'SB': { countryCode: 'SB', name: 'Solomon Islands', currency: 'USD'},
  'SC': { countryCode: 'SC', name: 'Seychelles', currency: 'USD'},
  'SD': { countryCode: 'SD', name: 'Sudan', currency: 'USD'},
  'SE': { countryCode: 'SE', name: 'Sweden', currency: 'USD'},
  'SG': { countryCode: 'SG', name: 'Singapore', currency: 'USD'},
  'SH': { countryCode: 'SH', name: 'St. Helena', currency: 'USD'},
  'SI': { countryCode: 'SI', name: 'Slovenia', currency: 'USD'},
  'SJ': { countryCode: 'SJ', name: 'Svalbard And Jan Mayen Islands', currency: 'USD'},
  'SK': { countryCode: 'SK', name: 'Slovakia', currency: 'USD'},
  'SL': { countryCode: 'SL', name: 'Sierra Leone', currency: 'USD'},
  'SM': { countryCode: 'SM', name: 'San Marino', currency: 'USD'},
  'SN': { countryCode: 'SN', name: 'Senegal', currency: 'USD'},
  'SO': { countryCode: 'SO', name: 'Somalia', currency: 'USD'},
  'SR': { countryCode: 'SR', name: 'Suriname', currency: 'USD'},
  'SS': { countryCode: 'SS', name: 'South Sudan', currency: 'USD'},
  'ST': { countryCode: 'ST', name: 'Sao Tome And Principe', currency: 'USD'},
  'SV': { countryCode: 'SV', name: 'El Salvador', currency: 'USD'},
  'SX': { countryCode: 'SX', name: 'Sint Maarten', currency: 'USD'},
  'SY': { countryCode: 'SY', name: 'Syrian Arab Republic', currency: 'USD'},
  'SZ': { countryCode: 'SZ', name: 'Swaziland', currency: 'USD'},
  'TA': { countryCode: 'TA', name: 'Tahiti', currency: 'USD'},
  'TC': { countryCode: 'TC', name: 'Turks And Caicos Islands', currency: 'USD'},
  'TD': { countryCode: 'TD', name: 'Chad', currency: 'USD'},
  'TF': { countryCode: 'TF', name: 'French Southern Territories', currency: 'USD'},
  'TG': { countryCode: 'TG', name: 'Togo', currency: 'USD'},
  'TH': { countryCode: 'TH', name: 'Thailand', currency: 'USD'},
  'TJ': { countryCode: 'TJ', name: 'Tajikistan', currency: 'USD'},
  'TK': { countryCode: 'TK', name: 'Tokelau', currency: 'USD'},
  'TL': { countryCode: 'TL', name: 'Timor-Leste', currency: 'USD'},
  'TM': { countryCode: 'TM', name: 'Turkmenistan', currency: 'USD'},
  'TN': { countryCode: 'TN', name: 'Tunisia', currency: 'USD'},
  'TO': { countryCode: 'TO', name: 'Tonga', currency: 'USD'},
  'TR': { countryCode: 'TR', name: 'Turkey', currency: 'USD'},
  'TT': { countryCode: 'TT', name: 'Trinidad And Tobago', currency: 'USD'},
  'TV': { countryCode: 'TV', name: 'Tuvalu', currency: 'USD'},
  'TW': { countryCode: 'TW', name: 'Taiwan', currency: 'USD'},
  'TZ': { countryCode: 'TZ', name: 'Tanzania', currency: 'USD'},
  'UA': { countryCode: 'UA', name: 'Ukraine', currency: 'USD'},
  'UG': { countryCode: 'UG', name: 'Uganda', currency: 'USD'},
  'UM': { countryCode: 'UM', name: 'United States Minor Outlying Islands', currency: 'USD'},
  'US': { countryCode: 'US', name: 'Usa', currency: 'USD'},
  'UY': { countryCode: 'UY', name: 'Uruguay', currency: 'USD'},
  'UZ': { countryCode: 'UZ', name: 'Uzbekistan', currency: 'USD'},
  'VA': { countryCode: 'VA', name: 'Vatican', currency: 'USD'},
  'VC': { countryCode: 'VC', name: 'Saint Vincent And The Grenadines', currency: 'USD'},
  'VE': { countryCode: 'VE', name: 'Venezuela', currency: 'USD'},
  'VG': { countryCode: 'VG', name: 'Virgin Islands (British)', currency: 'USD'},
  'VI': { countryCode: 'VI', name: 'Virgin Islands (U.S.)', currency: 'USD'},
  'VN': { countryCode: 'VN', name: 'Viet Nam', currency: 'USD'},
  'VU': { countryCode: 'VU', name: 'Vanuatu', currency: 'USD'},
  'WF': { countryCode: 'WF', name: 'Wallis And Futuna Islands', currency: 'USD'},
  'WS': { countryCode: 'WS', name: 'Samoa', currency: 'USD'},
  'YE': { countryCode: 'YE', name: 'Yemen', currency: 'USD'},
  'YT': { countryCode: 'YT', name: 'Mayotte', currency: 'USD'},
  'YU': { countryCode: 'YU', name: 'Yugoslavia', currency: 'USD'},
  'ZA': { countryCode: 'ZA', name: 'South Africa', currency: 'USD'},
  'ZM': { countryCode: 'ZM', name: 'Zambia', currency: 'USD'},
  'ZW': { countryCode: 'ZW', name: 'Zimbabwe', currency: 'USD'},
  'unknown': { countryCode: 'ZZ', name: 'Unknown', currency:'USD' }
}

var geoURL_http = 'http://www.geolocation.performgroup.com/page/userLocation/country/results.jsonp';
var geoURL_https = 'https://secure-geolocation.premiumtv.co.uk/page/userLocation/country/results.jsonp';
var geoURL = ('https:' == document.location.protocol) ? geoURL_https : geoURL_http;
var userLoc = geolocation['unknown'];
var locationReadyList = [];

function userLocationServerCallback(data) {
    if(geolocation[data.location] != undefined) {
      userLoc = geolocation[data.location];  
    }  
    if(locationReadyList) {
      jQuery.each(locationReadyList, function() {
        this.call(document, jQuery);
      });
    }  
    locationReadyList = null;
}

function addLocationReady(fn) {
    locationReadyList.push( fn );
}

$(document).ready(function() {
 $.ajax({
   url:           geoURL,
   cache:         true,
   async:         false,
   dataType:      'jsonp',
   type:          'GET',
   jsonpCallback: 'userLocationServerCallback'
 });
});

var geoLocationName;
var geoCurrency;
addLocationReady(function() {
    geoLocationName=userLoc.name;
    geoCurrency=userLoc.currency;
});/**
 * Checks if the article is available in the country the user comes from
 */
var checkAccessByCountry = function () {
	this.countries = {
    	"Algeria" : false,
        "Egypt" : false,
        "Bahrain" : false,
        "Tunisia" : false,
        "Oman" : false,
        "Jordan" : false,
        "United Arab Emirates" : false,
        "Chad" : false,
        "Kuwait" : false,
        "Qatar" : false,
        "Lebanon" :false,
        "Yemen" : false,
        "Saudi Arabia" : false,
        "Djibouti" : false,
        "Iran" : false,
        "Iraq" : false,
        "Libyan Arab Jamahiriya" : false,
        "Mauritania" : false,
        "Moroccov" : false,
        "Palestine" : false,
        "Somalia" : false,
        "South Sudan" : false,
        "Sudan" : false,
        "Syrian Arab Republic" : false
    },
    /**
     * Shows the geoblocked message
     * @return void
     */
    this.showGeoMessage = function () {
    	$('#geoblocked').show();
    },
    /**
     * Checks if the country that the user come from is allowed
     * @return boolean
     */
    this.contains = function (str) {
    	var country = this.countries[str];
    	if (typeof country !== 'undefined' && !country) {
    		return true;
    	}
        return false;
    },
    
    /**
     * Initialises the access check
     * @return void
     */
	this.init = function (clipId) {
        var userLocation = typeof geoLocationName !== 'undefined' ? geoLocationName : null;
        if (userLocation !== null && this.contains(userLocation)) {
          
        } else {
          this.showGeoMessage();
          $('#video-player-wrapper').remove()
          
          return "blocked";
        }
	}
};!function(t,e,i){var n=this,a=n.document,r=t(a),o=t(n),s=Array.prototype,l=1.32,c=true,u=3e4,h=false,f=navigator.userAgent.toLowerCase(),d=n.location.hash.replace(/#\//,""),p=n.location.protocol,g=Math,m=function(){},v=function(){return false},y=function(){var t=3,e=a.createElement("div"),n=e.getElementsByTagName("i");do{e.innerHTML="<!--[if gt IE "+ ++t+"]><i></i><![endif]-->"}while(n[0]);return t>4?t:i}(),b=function(){return{html:a.documentElement,body:a.body,head:a.getElementsByTagName("head")[0],title:a.title}},_=n.parent!==n.self,w="data ready thumbnail loadstart loadfinish image play pause progress "+"fullscreen_enter fullscreen_exit idle_enter idle_exit rescale "+"lightbox_open lightbox_close lightbox_image",x=function(){var e=[];t.each(w.split(" "),function(t,i){e.push(i);if(/_/.test(i)){e.push(i.replace(/_/g,""))}});return e}(),T=function(e){var i;if(typeof e!=="object"){return e}t.each(e,function(n,a){if(/^[a-z]+_/.test(n)){i="";t.each(n.split("_"),function(t,e){i+=t>0?e.substr(0,1).toUpperCase()+e.substr(1):e});e[i]=a;delete e[n]}});return e},k=function(i){if(t.inArray(i,x)>-1){return e[i.toUpperCase()]}return i},C={youtube:{reg:/https?:\/\/(?:[a-zA_Z]{2,3}.)?(?:youtube\.com\/watch\?)((?:[\w\d\-\_\=]+&amp;(?:amp;)?)*v(?:&lt;[A-Z]+&gt;)?=([0-9a-zA-Z\-\_]+))/i,embed:function(){return"http://www.youtube.com/embed/"+this.id},getUrl:function(){return p+"//gdata.youtube.com/feeds/api/videos/"+this.id+"?v=2&alt=json-in-script&callback=?"},get_thumb:function(t){return t.entry.media$group.media$thumbnail[2].url},get_image:function(t){if(t.entry.yt$hd){return p+"//img.youtube.com/vi/"+this.id+"/maxresdefault.jpg"}return t.entry.media$group.media$thumbnail[3].url}},vimeo:{reg:/https?:\/\/(?:www\.)?(vimeo\.com)\/(?:hd#)?([0-9]+)/i,embed:function(){return"http://player.vimeo.com/video/"+this.id},getUrl:function(){return p+"//vimeo.com/api/v2/video/"+this.id+".json?callback=?"},get_thumb:function(t){return t[0].thumbnail_medium},get_image:function(t){return t[0].thumbnail_large}},dailymotion:{reg:/https?:\/\/(?:www\.)?(dailymotion\.com)\/video\/([^_]+)/,embed:function(){return p+"//www.dailymotion.com/embed/video/"+this.id},getUrl:function(){return"https://api.dailymotion.com/video/"+this.id+"?fields=thumbnail_240_url,thumbnail_720_url&callback=?"},get_thumb:function(t){return t.thumbnail_240_url},get_image:function(t){return t.thumbnail_720_url}},_inst:[]},S=function(e,i){for(var n=0;n<C._inst.length;n++){if(C._inst[n].id===i&&C._inst[n].type==e){return C._inst[n]}}this.type=e;this.id=i;this.readys=[];C._inst.push(this);var a=this;t.extend(this,C[e]);t.getJSON(this.getUrl(),function(e){a.data=e;t.each(a.readys,function(t,e){e(a.data)});a.readys=[]});this.getMedia=function(t,e,i){i=i||m;var n=this;var a=function(i){e(n["get_"+t](i))};try{if(n.data){a(n.data)}else{n.readys.push(a)}}catch(r){i()}}},I=function(t){var e;for(var i in C){e=t&&C[i].reg&&t.match(C[i].reg);if(e&&e.length){return{id:e[2],provider:i}}}return false},E={support:function(){var t=b().html;return!_&&(t.requestFullscreen||t.mozRequestFullScreen||t.webkitRequestFullScreen)}(),callback:m,enter:function(t,e,i){this.instance=t;this.callback=e||m;i=i||b().html;if(i.requestFullscreen){i.requestFullscreen()}else if(i.mozRequestFullScreen){i.mozRequestFullScreen()}else if(i.webkitRequestFullScreen){i.webkitRequestFullScreen()}},exit:function(t){this.callback=t||m;if(a.exitFullscreen){a.exitFullscreen()}else if(a.mozCancelFullScreen){a.mozCancelFullScreen()}else if(a.webkitCancelFullScreen){a.webkitCancelFullScreen()}},instance:null,listen:function(){if(!this.support){return}var t=function(){if(!E.instance){return}var t=E.instance._fullscreen;if(a.fullscreen||a.mozFullScreen||a.webkitIsFullScreen){t._enter(E.callback)}else{t._exit(E.callback)}};a.addEventListener("fullscreenchange",t,false);a.addEventListener("mozfullscreenchange",t,false);a.addEventListener("webkitfullscreenchange",t,false)}},A=[],D=[],L=false,$=false,P=[],z=function(i){e.theme=i;t.each(P,function(t,e){if(!e._initialized){e._init.call(e)}});P=[]},H=function(){return{clearTimer:function(i){t.each(e.get(),function(){this.clearTimer(i)})},addTimer:function(i){t.each(e.get(),function(){this.addTimer(i)})},array:function(t){return s.slice.call(t,0)},create:function(t,e){e=e||"div";var i=a.createElement(e);i.className=t;return i},removeFromArray:function(e,i){t.each(e,function(t,n){if(n==i){e.splice(t,1);return false}});return e},getScriptPath:function(e){e=e||t("script:last").attr("src");var i=e.split("/");if(i.length==1){return""}i.pop();return i.join("/")+"/"},animate:function(){var i=function(t){var e="transition WebkitTransition MozTransition OTransition".split(" "),i;if(n.opera){return false}for(i=0;e[i];i++){if(typeof t[e[i]]!=="undefined"){return e[i]}}return false}((a.body||a.documentElement).style);var r={MozTransition:"transitionend",OTransition:"oTransitionEnd",WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[i];var o={_default:[.25,.1,.25,1],galleria:[.645,.045,.355,1],galleriaIn:[.55,.085,.68,.53],galleriaOut:[.25,.46,.45,.94],ease:[.25,0,.25,1],linear:[.25,.25,.75,.75],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]};var s=function(e,i,n){var a={};n=n||"transition";t.each("webkit moz ms o".split(" "),function(){a["-"+this+"-"+n]=i});e.css(a)};var l=function(t){s(t,"none","transition");if(e.WEBKIT&&e.TOUCH){s(t,"translate3d(0,0,0)","transform");if(t.data("revert")){t.css(t.data("revert"));t.data("revert",null)}}};var c,u,h,f,d,p,g;return function(a,v,y){y=t.extend({duration:400,complete:m,stop:false},y);a=t(a);if(!y.duration){a.css(v);y.complete.call(a[0]);return}if(!i){a.animate(v,y);return}if(y.stop){a.unbind(r);l(a)}c=false;t.each(v,function(t,e){g=a.css(t);if(H.parseValue(g)!=H.parseValue(e)){c=true}a.css(t,g)});if(!c){n.setTimeout(function(){y.complete.call(a[0])},y.duration);return}u=[];h=y.easing in o?o[y.easing]:o._default;f=" "+y.duration+"ms"+" cubic-bezier("+h.join(",")+")";n.setTimeout(function(i,n,a,r){return function(){i.one(n,function(t){return function(){l(t);y.complete.call(t[0])}}(i));if(e.WEBKIT&&e.TOUCH){d={};p=[0,0,0];t.each(["left","top"],function(t,e){if(e in a){p[t]=H.parseValue(a[e])-H.parseValue(i.css(e))+"px";d[e]=a[e];delete a[e]}});if(p[0]||p[1]){i.data("revert",d);u.push("-webkit-transform"+r);s(i,"translate3d("+p.join(",")+")","transform")}}t.each(a,function(t,e){u.push(t+r)});s(i,u.join(","));i.css(a)}}(a,r,v,f),2)}}(),removeAlpha:function(t){if(t instanceof jQuery){t=t[0]}if(y<9&&t){var e=t.style,i=t.currentStyle,n=i&&i.filter||e.filter||"";if(/alpha/.test(n)){e.filter=n.replace(/alpha\([^)]*\)/i,"")}}},forceStyles:function(e,i){e=t(e);if(e.attr("style")){e.data("styles",e.attr("style")).removeAttr("style")}e.css(i)},revertStyles:function(){t.each(H.array(arguments),function(e,i){i=t(i);i.removeAttr("style");i.attr("style","");if(i.data("styles")){i.attr("style",i.data("styles")).data("styles",null)}})},moveOut:function(t){H.forceStyles(t,{position:"absolute",left:-1e4})},moveIn:function(){H.revertStyles.apply(H,H.array(arguments))},hide:function(e,i,n){n=n||m;var a=t(e);e=a[0];if(!a.data("opacity")){a.data("opacity",a.css("opacity"))}var r={opacity:0};if(i){var o=y<9&&e?function(){H.removeAlpha(e);e.style.visibility="hidden";n.call(e)}:n;H.animate(e,r,{duration:i,complete:o,stop:true})}else{if(y<9&&e){H.removeAlpha(e);e.style.visibility="hidden"}else{a.css(r)}}},show:function(e,i,n){n=n||m;var a=t(e);e=a[0];var r=parseFloat(a.data("opacity"))||1,o={opacity:r};if(i){if(y<9){a.css("opacity",0);e.style.visibility="visible"}var s=y<9&&e?function(){if(o.opacity==1){H.removeAlpha(e)}n.call(e)}:n;H.animate(e,o,{duration:i,complete:s,stop:true})}else{if(y<9&&o.opacity==1&&e){H.removeAlpha(e);e.style.visibility="visible"}else{a.css(o)}}},wait:function(i){e._waiters=e._waiters||[];i=t.extend({until:v,success:m,error:function(){e.raise("Could not complete wait function.")},timeout:3e3},i);var a=H.timestamp(),r,o,s,l=function(){o=H.timestamp();r=o-a;H.removeFromArray(e._waiters,s);if(i.until(r)){i.success();return false}if(typeof i.timeout=="number"&&o>=a+i.timeout){i.error();return false}e._waiters.push(s=n.setTimeout(l,10))};e._waiters.push(s=n.setTimeout(l,10))},toggleQuality:function(t,e){if(y!==7&&y!==8||!t||t.nodeName.toUpperCase()!="IMG"){return}if(typeof e==="undefined"){e=t.style.msInterpolationMode==="nearest-neighbor"}t.style.msInterpolationMode=e?"bicubic":"nearest-neighbor"},insertStyleTag:function(e,i){if(i&&t("#"+i).length){return}var n=a.createElement("style");if(i){n.id=i}b().head.appendChild(n);if(n.styleSheet){n.styleSheet.cssText=e}else{var r=a.createTextNode(e);n.appendChild(r)}},loadScript:function(e,i){var n=false,a=t("<scr"+"ipt>").attr({src:e,async:true}).get(0);a.onload=a.onreadystatechange=function(){if(!n&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){n=true;a.onload=a.onreadystatechange=null;if(typeof i==="function"){i.call(this,this)}}};b().head.appendChild(a)},parseValue:function(t){if(typeof t==="number"){return t}else if(typeof t==="string"){var e=t.match(/\-?\d|\./g);return e&&e.constructor===Array?e.join("")*1:0}else{return 0}},timestamp:function(){return(new Date).getTime()},loadCSS:function(n,r,o){var s,l;t("link[rel=stylesheet]").each(function(){if(new RegExp(n).test(this.href)){s=this;return false}});if(typeof r==="function"){o=r;r=i}o=o||m;if(s){o.call(s,s);return s}l=a.styleSheets.length;if(t("#"+r).length){t("#"+r).attr("href",n);l--}else{s=t("<link>").attr({rel:"stylesheet",href:n,id:r}).get(0);var c=t('link[rel="stylesheet"], style');if(c.length){c.get(0).parentNode.insertBefore(s,c[0])}else{b().head.appendChild(s)}if(y&&l>=31){e.raise("You have reached the browser stylesheet limit (31)",true);return}}if(typeof o==="function"){var u=t("<s>").attr("id","galleria-loader").hide().appendTo(b().body);H.wait({until:function(){return u.height()==1},success:function(){u.remove();o.call(s,s)},error:function(){u.remove();e.raise("Theme CSS could not load after 20 sec. "+(e.QUIRK?"Your browser is in Quirks Mode, please add a correct doctype.":"Please download the latest theme at http://galleria.io/customer/."),true)},timeout:5e3})}return s}}}(),O=function(e){var i=".galleria-videoicon{width:60px;height:60px;position:absolute;top:50%;left:50%;z-index:1;"+"margin:-30px 0 0 -30px;cursor:pointer;background:#000;background:rgba(0,0,0,.8);border-radius:3px;-webkit-transition:all 150ms}"+".galleria-videoicon i{width:0px;height:0px;border-style:solid;border-width:10px 0 10px 16px;display:block;"+"border-color:transparent transparent transparent #ffffff;margin:20px 0 0 22px}.galleria-image:hover .galleria-videoicon{background:#000}";H.insertStyleTag(i,"galleria-videoicon");return t(H.create("galleria-videoicon")).html("<i></i>").appendTo(e).click(function(){t(this).siblings("img").mouseup()})},F=function(){var e=function(e,i,n,a){var r=this.getOptions("easing"),o=this.getStageWidth(),s={left:o*(e.rewind?-1:1)},l={left:0};if(n){s.opacity=0;l.opacity=1}else{s.opacity=1}t(e.next).css(s);H.animate(e.next,l,{duration:e.speed,complete:function(t){return function(){i();t.css({left:0})}}(t(e.next).add(e.prev)),queue:false,easing:r});if(a){e.rewind=!e.rewind}if(e.prev){s={left:0};l={left:o*(e.rewind?1:-1)};if(n){s.opacity=1;l.opacity=0}t(e.prev).css(s);H.animate(e.prev,l,{duration:e.speed,queue:false,easing:r,complete:function(){t(this).css("opacity",0)}})}};return{active:false,init:function(t,e,i){if(F.effects.hasOwnProperty(t)){F.effects[t].call(this,e,i)}},effects:{fade:function(e,i){t(e.next).css({opacity:0,left:0});H.animate(e.next,{opacity:1},{duration:e.speed,complete:i});if(e.prev){t(e.prev).css("opacity",1).show();H.animate(e.prev,{opacity:0},{duration:e.speed})}},flash:function(e,i){t(e.next).css({opacity:0,left:0});if(e.prev){H.animate(e.prev,{opacity:0},{duration:e.speed/2,complete:function(){H.animate(e.next,{opacity:1},{duration:e.speed,complete:i})}})}else{H.animate(e.next,{opacity:1},{duration:e.speed,complete:i})}},pulse:function(e,i){if(e.prev){t(e.prev).hide()}t(e.next).css({opacity:0,left:0}).show();H.animate(e.next,{opacity:1},{duration:e.speed,complete:i})},slide:function(t,i){e.apply(this,H.array(arguments))},fadeslide:function(t,i){e.apply(this,H.array(arguments).concat([true]))},doorslide:function(t,i){e.apply(this,H.array(arguments).concat([false,true]))}}}}();E.listen();o.bind("orientationchange",function(){t(this).resize()});e=n.Galleria=function(){var s=this;this._options={};this._playing=false;this._playtime=5e3;this._active=null;this._queue={length:0};this._data=[];this._dom={};this._thumbnails=[];this._layers=[];this._initialized=false;this._firstrun=false;this._stageWidth=0;this._stageHeight=0;this._target=i;this._binds=[];this._id=parseInt(g.random()*1e4,10);var l="container stage images image-nav image-nav-left image-nav-right "+"info info-text info-title info-description "+"thumbnails thumbnails-list thumbnails-container thumb-nav-left thumb-nav-right "+"loader counter tooltip",c="current total";t.each(l.split(" "),function(t,e){s._dom[e]=H.create("galleria-"+e)});t.each(c.split(" "),function(t,e){s._dom[e]=H.create("galleria-"+e,"span")});var u=this._keyboard={keys:{UP:38,DOWN:40,LEFT:37,RIGHT:39,RETURN:13,ESCAPE:27,BACKSPACE:8,SPACE:32},map:{},bound:false,press:function(t){var e=t.keyCode||t.which;if(e in u.map&&typeof u.map[e]==="function"){u.map[e].call(s,t)}},attach:function(t){var e,i;for(e in t){if(t.hasOwnProperty(e)){i=e.toUpperCase();if(i in u.keys){u.map[u.keys[i]]=t[e]}else{u.map[i]=t[e]}}}if(!u.bound){u.bound=true;r.bind("keydown",u.press)}},detach:function(){u.bound=false;u.map={};r.unbind("keydown",u.press)}};var h=this._controls={0:i,1:i,active:0,swap:function(){h.active=h.active?0:1},getActive:function(){return s._options.swipe?h.slides[s._active]:h[h.active]},getNext:function(){return s._options.swipe?h.slides[s.getNext(s._active)]:h[1-h.active]},slides:[],frames:[],layers:[]};var d=this._carousel={next:s.$("thumb-nav-right"),prev:s.$("thumb-nav-left"),width:0,current:0,max:0,hooks:[],update:function(){var e=0,i=0,n=[0];t.each(s._thumbnails,function(a,r){if(r.ready){e+=r.outerWidth||t(r.container).outerWidth(true);var o=t(r.container).width();e+=o-g.floor(o);n[a+1]=e;i=g.max(i,r.outerHeight||t(r.container).outerHeight(true))}});s.$("thumbnails").css({width:e,height:i});d.max=e;d.hooks=n;d.width=s.$("thumbnails-list").width();d.setClasses();s.$("thumbnails-container").toggleClass("galleria-carousel",e>d.width);d.width=s.$("thumbnails-list").width()},bindControls:function(){var t;d.next.bind("click",function(e){e.preventDefault();if(s._options.carouselSteps==="auto"){for(t=d.current;t<d.hooks.length;t++){if(d.hooks[t]-d.hooks[d.current]>d.width){d.set(t-2);break}}}else{d.set(d.current+s._options.carouselSteps)}});d.prev.bind("click",function(e){e.preventDefault();if(s._options.carouselSteps==="auto"){for(t=d.current;t>=0;t--){if(d.hooks[d.current]-d.hooks[t]>d.width){d.set(t+2);break}else if(t===0){d.set(0);break}}}else{d.set(d.current-s._options.carouselSteps)}})},set:function(t){t=g.max(t,0);while(d.hooks[t-1]+d.width>=d.max&&t>=0){t--}d.current=t;d.animate()},getLast:function(t){return(t||d.current)-1},follow:function(t){if(t===0||t===d.hooks.length-2){d.set(t);return}var e=d.current;while(d.hooks[e]-d.hooks[d.current]<d.width&&e<=d.hooks.length){e++}if(t-1<d.current){d.set(t-1)}else if(t+2>e){d.set(t-e+d.current+2)}},setClasses:function(){d.prev.toggleClass("disabled",!d.current);d.next.toggleClass("disabled",d.hooks[d.current]+d.width>=d.max)},animate:function(e){d.setClasses();var i=d.hooks[d.current]*-1;if(isNaN(i)){return}s.$("thumbnails").css("left",function(){return t(this).css("left")});H.animate(s.get("thumbnails"),{left:i},{duration:s._options.carouselSpeed,easing:s._options.easing,queue:false})}};var p=this._tooltip={initialized:false,open:false,timer:"tooltip"+s._id,swapTimer:"swap"+s._id,init:function(){p.initialized=true;var t=".galleria-tooltip{padding:3px 8px;max-width:50%;background:#ffe;color:#000;z-index:3;position:absolute;font-size:11px;line-height:1.3;"+"opacity:0;box-shadow:0 0 2px rgba(0,0,0,.4);-moz-box-shadow:0 0 2px rgba(0,0,0,.4);-webkit-box-shadow:0 0 2px rgba(0,0,0,.4);}";H.insertStyleTag(t,"galleria-tooltip");s.$("tooltip").css({opacity:.8,visibility:"visible",display:"none"})},move:function(t){var e=s.getMousePosition(t).x,i=s.getMousePosition(t).y,n=s.$("tooltip"),a=e,r=i,o=n.outerHeight(true)+1,l=n.outerWidth(true),c=o+15;var u=s.$("container").width()-l-2,h=s.$("container").height()-o-2;if(!isNaN(a)&&!isNaN(r)){a+=10;r-=o+8;a=g.max(0,g.min(u,a));r=g.max(0,g.min(h,r));if(i<c){r=c}n.css({left:a,top:r})}},bind:function(i,n){if(e.TOUCH){return}if(!p.initialized){p.init()}var a=function(){s.$("container").unbind("mousemove",p.move);s.clearTimer(p.timer);s.$("tooltip").stop().animate({opacity:0},200,function(){s.$("tooltip").hide();s.addTimer(p.swapTimer,function(){p.open=false},1e3)})};var r=function(e,i){p.define(e,i);t(e).hover(function(){s.clearTimer(p.swapTimer);s.$("container").unbind("mousemove",p.move).bind("mousemove",p.move).trigger("mousemove");p.show(e);s.addTimer(p.timer,function(){s.$("tooltip").stop().show().animate({opacity:1});p.open=true},p.open?0:500)},a).click(a)};if(typeof n==="string"){r(i in s._dom?s.get(i):i,n)}else{t.each(i,function(t,e){r(s.get(t),e)})}},show:function(e){e=t(e in s._dom?s.get(e):e);var i=e.data("tt"),a=function(t){n.setTimeout(function(t){return function(){p.move(t)}}(t),10);e.unbind("mouseup",a)};i=typeof i==="function"?i():i;if(!i){return}s.$("tooltip").html(i.replace(/\s/,"&#160;"));e.bind("mouseup",a)},define:function(e,i){if(typeof i!=="function"){var n=i;i=function(){return n}}e=t(e in s._dom?s.get(e):e).data("tt",i);p.show(e)}};var m=this._fullscreen={scrolled:0,crop:i,active:false,prev:t(),beforeEnter:function(t){t()},beforeExit:function(t){t()},keymap:s._keyboard.map,parseCallback:function(e,i){return F.active?function(){if(typeof e=="function"){e.call(s)}var n=s._controls.getActive(),a=s._controls.getNext();s._scaleImage(a);s._scaleImage(n);if(i&&s._options.trueFullscreen){t(n.container).add(a.container).trigger("transitionend")}}:e},enter:function(t){m.beforeEnter(function(){t=m.parseCallback(t,true);if(s._options.trueFullscreen&&E.support){m.active=true;H.forceStyles(s.get("container"),{width:"100%",height:"100%"});s.rescale();if(e.MAC){if(!(e.SAFARI&&/version\/[1-5]/.test(f))){s.$("container").css("opacity",0).addClass("fullscreen");n.setTimeout(function(){m.scale();s.$("container").css("opacity",1)},50)}else{s.$("stage").css("opacity",0);n.setTimeout(function(){m.scale();s.$("stage").css("opacity",1)},4)}}else{s.$("container").addClass("fullscreen")}o.resize(m.scale);E.enter(s,t,s.get("container"))}else{m.scrolled=o.scrollTop();if(!e.TOUCH){n.scrollTo(0,0)}m._enter(t)}})},_enter:function(r){m.active=true;if(_){m.iframe=function(){var i,r=a.referrer,o=a.createElement("a"),s=n.location;o.href=r;if(o.protocol!=s.protocol||o.hostname!=s.hostname||o.port!=s.port){e.raise("Parent fullscreen not available. Iframe protocol, domains and ports must match.");return false}m.pd=n.parent.document;t(m.pd).find("iframe").each(function(){var t=this.contentDocument||this.contentWindow.document;if(t===a){i=this;return false}});return i}()}H.hide(s.getActiveImage());if(_&&m.iframe){m.iframe.scrolled=t(n.parent).scrollTop();n.parent.scrollTo(0,0)}var l=s.getData(),c=s._options,u=!s._options.trueFullscreen||!E.support,h={height:"100%",overflow:"hidden",margin:0,padding:0};if(u){s.$("container").addClass("fullscreen");m.prev=s.$("container").prev();if(!m.prev.length){m.parent=s.$("container").parent()}s.$("container").appendTo("body");H.forceStyles(s.get("container"),{position:e.TOUCH?"absolute":"fixed",top:0,left:0,width:"100%",height:"100%",zIndex:1e4});H.forceStyles(b().html,h);H.forceStyles(b().body,h)}if(_&&m.iframe){H.forceStyles(m.pd.documentElement,h);H.forceStyles(m.pd.body,h);H.forceStyles(m.iframe,t.extend(h,{width:"100%",height:"100%",top:0,left:0,position:"fixed",zIndex:1e4,border:"none"}))}m.keymap=t.extend({},s._keyboard.map);s.attachKeyboard({escape:s.exitFullscreen,right:s.next,left:s.prev});m.crop=c.imageCrop;if(c.fullscreenCrop!=i){c.imageCrop=c.fullscreenCrop}if(l&&l.big&&l.image!==l.big){var f=new e.Picture,d=f.isCached(l.big),p=s.getIndex(),g=s._thumbnails[p];s.trigger({type:e.LOADSTART,cached:d,rewind:false,index:p,imageTarget:s.getActiveImage(),thumbTarget:g,galleriaData:l});f.load(l.big,function(i){s._scaleImage(i,{complete:function(i){s.trigger({type:e.LOADFINISH,cached:d,index:p,rewind:false,imageTarget:i.image,thumbTarget:g});var n=s._controls.getActive().image;if(n){t(n).width(i.image.width).height(i.image.height).attr("style",t(i.image).attr("style")).attr("src",i.image.src)}}})})}s.rescale(function(){s.addTimer(false,function(){if(u){H.show(s.getActiveImage())}if(typeof r==="function"){r.call(s)}s.rescale()},100);s.trigger(e.FULLSCREEN_ENTER)});if(!u){H.show(s.getActiveImage())}else{o.resize(m.scale)}},scale:function(){s.rescale()},exit:function(t){m.beforeExit(function(){t=m.parseCallback(t);if(s._options.trueFullscreen&&E.support){E.exit(t)}else{m._exit(t)}})},_exit:function(t){m.active=false;var i=!s._options.trueFullscreen||!E.support,a=s.$("container").removeClass("fullscreen");if(m.parent){m.parent.prepend(a)}else{a.insertAfter(m.prev)}if(i){H.hide(s.getActiveImage());H.revertStyles(s.get("container"),b().html,b().body);if(!e.TOUCH){n.scrollTo(0,m.scrolled)}var r=s._controls.frames[s._controls.active];if(r&&r.image){r.image.src=r.image.src}}if(_&&m.iframe){H.revertStyles(m.pd.documentElement,m.pd.body,m.iframe);if(m.iframe.scrolled){n.parent.scrollTo(0,m.iframe.scrolled)}}s.detachKeyboard();s.attachKeyboard(m.keymap);s._options.imageCrop=m.crop;var l=s.getData().big,c=s._controls.getActive().image;if(!s.getData().iframe&&c&&l&&l==c.src){n.setTimeout(function(t){return function(){c.src=t}}(s.getData().image),1)}s.rescale(function(){s.addTimer(false,function(){if(i){H.show(s.getActiveImage())}if(typeof t==="function"){t.call(s)}o.trigger("resize")},50);s.trigger(e.FULLSCREEN_EXIT)});o.unbind("resize",m.scale)}};var v=this._idle={trunk:[],bound:false,active:false,add:function(e,i,n,a){if(!e){return}if(!v.bound){v.addEvent()}e=t(e);if(typeof n=="boolean"){a=n;n={}}n=n||{};var r={},o;for(o in i){if(i.hasOwnProperty(o)){r[o]=e.css(o)}}e.data("idle",{from:t.extend(r,n),to:i,complete:true,busy:false});if(!a){v.addTimer()}else{e.css(i)}v.trunk.push(e)},remove:function(e){e=t(e);t.each(v.trunk,function(t,i){if(i&&i.length&&!i.not(e).length){e.css(e.data("idle").from);v.trunk.splice(t,1)}});if(!v.trunk.length){v.removeEvent();s.clearTimer(v.timer)}},addEvent:function(){v.bound=true;s.$("container").bind("mousemove click",v.showAll);if(s._options.idleMode=="hover"){s.$("container").bind("mouseleave",v.hide)}},removeEvent:function(){v.bound=false;s.$("container").bind("mousemove click",v.showAll);if(s._options.idleMode=="hover"){s.$("container").unbind("mouseleave",v.hide)}},addTimer:function(){if(s._options.idleMode=="hover"){return}s.addTimer("idle",function(){v.hide()},s._options.idleTime)},hide:function(){if(!s._options.idleMode||s.getIndex()===false){return}s.trigger(e.IDLE_ENTER);var i=v.trunk.length;t.each(v.trunk,function(t,e){var n=e.data("idle");if(!n){return}e.data("idle").complete=false;H.animate(e,n.to,{duration:s._options.idleSpeed,complete:function(){if(t==i-1){v.active=false}}})})},showAll:function(){s.clearTimer("idle");t.each(v.trunk,function(t,e){v.show(e)})},show:function(i){var n=i.data("idle");if(!v.active||!n.busy&&!n.complete){n.busy=true;s.trigger(e.IDLE_EXIT);s.clearTimer("idle");H.animate(i,n.from,{duration:s._options.idleSpeed/2,complete:function(){v.active=true;t(i).data("idle").busy=false;t(i).data("idle").complete=true}})}v.addTimer()}};var w=this._lightbox={width:0,height:0,initialized:false,active:null,image:null,elems:{},keymap:false,init:function(){if(w.initialized){return}w.initialized=true;var i="overlay box content shadow title info close prevholder prev nextholder next counter image",n={},a=s._options,r="",o="position:absolute;",l="lightbox-",c={overlay:"position:fixed;display:none;opacity:"+a.overlayOpacity+";filter:alpha(opacity="+a.overlayOpacity*100+");top:0;left:0;width:100%;height:100%;background:"+a.overlayBackground+";z-index:99990",box:"position:fixed;display:none;width:400px;height:400px;top:50%;left:50%;margin-top:-200px;margin-left:-200px;z-index:99991",shadow:o+"background:#000;width:100%;height:100%;",content:o+"background-color:#fff;top:10px;left:10px;right:10px;bottom:10px;overflow:hidden",info:o+"bottom:10px;left:10px;right:10px;color:#444;font:11px/13px arial,sans-serif;height:13px",close:o+"top:10px;right:10px;height:20px;width:20px;background:#fff;text-align:center;cursor:pointer;color:#444;font:16px/22px arial,sans-serif;z-index:99999",image:o+"top:10px;left:10px;right:10px;bottom:30px;overflow:hidden;display:block;",prevholder:o+"width:50%;top:0;bottom:40px;cursor:pointer;",nextholder:o+"width:50%;top:0;bottom:40px;right:-1px;cursor:pointer;",prev:o+"top:50%;margin-top:-20px;height:40px;width:30px;background:#fff;left:20px;display:none;text-align:center;color:#000;font:bold 16px/36px arial,sans-serif",next:o+"top:50%;margin-top:-20px;height:40px;width:30px;background:#fff;right:20px;left:auto;display:none;font:bold 16px/36px arial,sans-serif;text-align:center;color:#000",title:"float:left",counter:"float:right;margin-left:8px;"},u=function(e){return e.hover(function(){t(this).css("color","#bbb")},function(){t(this).css("color","#444")})},h={};if(y&&y>7){c.nextholder+="background:#000;filter:alpha(opacity=0);";c.prevholder+="background:#000;filter:alpha(opacity=0);"}t.each(c,function(t,e){r+=".galleria-"+l+t+"{"+e+"}"});r+=".galleria-"+l+"box.iframe .galleria-"+l+"prevholder,"+".galleria-"+l+"box.iframe .galleria-"+l+"nextholder{"+"width:100px;height:100px;top:50%;margin-top:-70px}";H.insertStyleTag(r,"galleria-lightbox");t.each(i.split(" "),function(t,e){s.addElement("lightbox-"+e);n[e]=w.elems[e]=s.get("lightbox-"+e)});w.image=new e.Picture;t.each({box:"shadow content close prevholder nextholder",info:"title counter",content:"info image",prevholder:"prev",nextholder:"next"},function(e,i){var n=[];t.each(i.split(" "),function(t,e){n.push(l+e)});h[l+e]=n});s.append(h);t(n.image).append(w.image.container);t(b().body).append(n.overlay,n.box);u(t(n.close).bind("click",w.hide).html("&#215;"));t.each(["Prev","Next"],function(i,a){var r=t(n[a.toLowerCase()]).html(/v/.test(a)?"&#8249;&#160;":"&#160;&#8250;"),o=t(n[a.toLowerCase()+"holder"]);o.bind("click",function(){w["show"+a]()});if(y<8||e.TOUCH){r.show();return}o.hover(function(){r.show()},function(t){r.stop().fadeOut(200)})});t(n.overlay).bind("click",w.hide);if(e.IPAD){s._options.lightboxTransitionSpeed=0}},rescale:function(i){var n=g.min(o.width()-40,w.width),a=g.min(o.height()-60,w.height),r=g.min(n/w.width,a/w.height),l=g.round(w.width*r)+40,c=g.round(w.height*r)+60,u={width:l,height:c,"margin-top":g.ceil(c/2)*-1,"margin-left":g.ceil(l/2)*-1};if(i){t(w.elems.box).css(u)}else{t(w.elems.box).animate(u,{duration:s._options.lightboxTransitionSpeed,easing:s._options.easing,complete:function(){var i=w.image,n=s._options.lightboxFadeSpeed;s.trigger({type:e.LIGHTBOX_IMAGE,imageTarget:i.image});t(i.container).show();t(i.image).animate({opacity:1},n);H.show(w.elems.info,n)}})}},hide:function(){w.image.image=null;o.unbind("resize",w.rescale);t(w.elems.box).hide().find("iframe").remove();H.hide(w.elems.info);s.detachKeyboard();s.attachKeyboard(w.keymap);w.keymap=false;H.hide(w.elems.overlay,200,function(){t(this).hide().css("opacity",s._options.overlayOpacity);s.trigger(e.LIGHTBOX_CLOSE)})},showNext:function(){w.show(s.getNext(w.active))},showPrev:function(){w.show(s.getPrev(w.active))},show:function(i){w.active=i=typeof i==="number"?i:s.getIndex()||0;if(!w.initialized){w.init()}s.trigger(e.LIGHTBOX_OPEN);if(!w.keymap){w.keymap=t.extend({},s._keyboard.map);s.attachKeyboard({escape:w.hide,right:w.showNext,left:w.showPrev})}o.unbind("resize",w.rescale);var a=s.getData(i),r=s.getDataLength(),l=s.getNext(i),c,u,h;H.hide(w.elems.info);try{for(h=s._options.preload;h>0;h--){u=new e.Picture;c=s.getData(l);u.preload(c.big?c.big:c.image);l=s.getNext(l)}}catch(f){}w.image.isIframe=a.iframe&&!a.image;t(w.elems.box).toggleClass("iframe",w.image.isIframe);t(w.image.container).find(".galleria-videoicon").remove();w.image.load(a.big||a.image||a.iframe,function(e){if(e.isIframe){var l=t(n).width(),c=t(n).height();if(e.video&&s._options.maxVideoSize){var u=g.min(s._options.maxVideoSize/l,s._options.maxVideoSize/c);if(u<1){l*=u;c*=u}}w.width=l;w.height=c}else{w.width=e.original.width;w.height=e.original.height}t(e.image).css({width:e.isIframe?"100%":"100.1%",height:e.isIframe?"100%":"100.1%",top:0,bottom:0,zIndex:99998,opacity:0,visibility:"visible"}).parent().height("100%");w.elems.title.innerHTML=a.title||"";w.elems.counter.innerHTML=i+1+" / "+r;o.resize(w.rescale);w.rescale();if(a.image&&a.iframe){t(w.elems.box).addClass("iframe");if(a.video){var h=O(e.container).hide();n.setTimeout(function(){h.fadeIn(200)},200)}t(e.image).css("cursor","pointer").mouseup(function(e,i){return function(n){t(w.image.container).find(".galleria-videoicon").remove();n.preventDefault();i.isIframe=true;i.load(e.iframe+(e.video?"&autoplay=1":""),{width:"100%",height:y<8?t(w.image.container).height():"100%"})}}(a,e))}});t(w.elems.overlay).show().css("visibility","visible");t(w.elems.box).show()}};var x=this._timer={trunk:{},add:function(t,e,i,a){t=t||(new Date).getTime();a=a||false;this.clear(t);if(a){var r=e;e=function(){r();x.add(t,e,i)}}this.trunk[t]=n.setTimeout(e,i)},clear:function(t){var e=function(t){n.clearTimeout(this.trunk[t]);delete this.trunk[t]},i;if(!!t&&t in this.trunk){e.call(this,t)}else if(typeof t==="undefined"){for(i in this.trunk){if(this.trunk.hasOwnProperty(i)){e.call(this,i)}}}}};return this};e.prototype={constructor:e,init:function(n,a){a=T(a);this._original={target:n,options:a,data:null};this._target=this._dom.target=n.nodeName?n:t(n).get(0);this._original.html=this._target.innerHTML;D.push(this);if(!this._target){e.raise("Target not found",true);return}this._options={autoplay:false,carousel:true,carouselFollow:true,carouselSpeed:400,carouselSteps:"auto",clicknext:false,dailymotion:{foreground:"%23EEEEEE",highlight:"%235BCEC5",background:"%23222222",logo:0,hideInfos:1},dataConfig:function(t){return{}},dataSelector:"img",dataSort:false,dataSource:this._target,debug:i,dummy:i,easing:"galleria",extend:function(t){},fullscreenCrop:i,fullscreenDoubleTap:true,fullscreenTransition:i,height:0,idleMode:true,idleTime:3e3,idleSpeed:200,imageCrop:false,imageMargin:0,imagePan:false,imagePanSmoothness:12,imagePosition:"50%",imageTimeout:i,initialTransition:i,keepSource:false,layerFollow:true,lightbox:false,lightboxFadeSpeed:200,lightboxTransitionSpeed:200,linkSourceImages:true,maxScaleRatio:i,maxVideoSize:i,minScaleRatio:i,overlayOpacity:.85,overlayBackground:"#0b0b0b",pauseOnInteraction:true,popupLinks:false,preload:2,queue:true,responsive:true,show:0,showInfo:true,showCounter:true,showImagenav:true,swipe:true,thumbCrop:true,thumbEventType:"click",thumbMargin:0,thumbQuality:"auto",thumbDisplayOrder:true,thumbPosition:"50%",thumbnails:true,touchTransition:i,transition:"fade",transitionInitial:i,transitionSpeed:400,trueFullscreen:true,useCanvas:false,variation:"",videoPoster:true,vimeo:{title:0,byline:0,portrait:0,color:"aaaaaa"},wait:5e3,width:"auto",youtube:{modestbranding:1,autohide:1,color:"white",hd:1,rel:0,showinfo:0}};this._options.initialTransition=this._options.initialTransition||this._options.transitionInitial;if(a&&a.debug===false){c=false}if(a&&typeof a.imageTimeout==="number"){u=a.imageTimeout}if(a&&typeof a.dummy==="string"){h=a.dummy}if(!e.TOUCH){this._options.swipe=false}t(this._target).children().hide();if(e.QUIRK){e.raise("Your page is in Quirks mode, Galleria may not render correctly. Please validate your HTML and add a correct doctype.")
}if(typeof e.theme==="object"){this._init()}else{P.push(this)}return this},_init:function(){var r=this,s=this._options;if(this._initialized){e.raise("Init failed: Gallery instance already initialized.");return this}this._initialized=true;if(!e.theme){e.raise("Init failed: No theme found.",true);return this}t.extend(true,s,e.theme.defaults,this._original.options,e.configure.options);if(s.swipe){s.clicknext=false;s.imagePan=false}!function(t){if(!("getContext"in t)){t=null;return}$=$||{elem:t,context:t.getContext("2d"),cache:{},length:0}}(a.createElement("canvas"));e.Fastclick.init(this.get("target"));this.bind(e.DATA,function(){if(n.screen&&n.screen.width&&Array.prototype.forEach){this._data.forEach(function(t){var e="devicePixelRatio"in n?n.devicePixelRatio:1,i=g.max(n.screen.width,n.screen.height);if(i*e<1024){t.big=t.image}})}this._original.data=this._data;this.get("total").innerHTML=this.getDataLength();var t=this.$("container");if(r._options.height<2){r._userRatio=r._ratio=r._options.height}var i={width:0,height:0};var a=function(){return r.$("stage").height()};H.wait({until:function(){i=r._getWH();t.width(i.width).height(i.height);return a()&&i.width&&i.height>50},success:function(){r._width=i.width;r._height=i.height;r._ratio=r._ratio||i.height/i.width;if(e.WEBKIT){n.setTimeout(function(){r._run()},1)}else{r._run()}},error:function(){if(a()){e.raise("Could not extract sufficient width/height of the gallery container. Traced measures: width:"+i.width+"px, height: "+i.height+"px.",true)}else{e.raise("Could not extract a stage height from the CSS. Traced height: "+a()+"px.",true)}},timeout:typeof this._options.wait=="number"?this._options.wait:false})});this.append({"info-text":["info-title","info-description"],info:["info-text"],"image-nav":["image-nav-right","image-nav-left"],stage:["images","loader","counter","image-nav"],"thumbnails-list":["thumbnails"],"thumbnails-container":["thumb-nav-left","thumbnails-list","thumb-nav-right"],container:["stage","thumbnails-container","info","tooltip"]});H.hide(this.$("counter").append(this.get("current"),a.createTextNode(" / "),this.get("total")));this.setCounter("&#8211;");H.hide(r.get("tooltip"));this.$("container").addClass((e.TOUCH?"touch":"notouch")+" "+this._options.variation);if(!this._options.swipe){t.each(new Array(2),function(i){var n=new e.Picture;t(n.container).css({position:"absolute",top:0,left:0}).prepend(r._layers[i]=t(H.create("galleria-layer")).css({position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:2})[0]);r.$("images").append(n.container);r._controls[i]=n;var a=new e.Picture;a.isIframe=true;t(a.container).attr("class","galleria-frame").css({position:"absolute",top:0,left:0,zIndex:4,background:"#000",display:"none"}).appendTo(n.container);r._controls.frames[i]=a})}this.$("images").css({position:"relative",top:0,left:0,width:"100%",height:"100%"});if(s.swipe){this.$("images").css({position:"absolute",top:0,left:0,width:0,height:"100%"});this.finger=new e.Finger(this.get("stage"),{onchange:function(t){r.setCounter(t);r.pause();r.show(t)},oncomplete:function(t){var i=g.max(0,g.min(parseInt(t,10),r.getDataLength()-1)),n=r.getData(i);if(!n){return}r.$("images").find("iframe").remove();r.$("images").find(".galleria-frame").css("opacity",0).hide();var a=r.isFullscreen()&&n.big?n.big:n.image||n.iframe,o=r._controls.slides[i],s=o.isCached(a),l=r._thumbnails[i];r.trigger({type:e.IMAGE,cached:s,index:i,imageTarget:o.image,thumbTarget:l.image,galleriaData:n});if(r._options.carousel&&r._options.carouselFollow){r._carousel.follow(i)}}});this.bind(e.RESCALE,function(){this.finger.setup()});this.$("stage").bind("click",function(e){var a=r.getData();if(!a){return}if(a.iframe){if(r.isPlaying()){r.pause()}var o=r._controls.frames[r._active],s=r._stageWidth,l=r._stageHeight;if(t(o.container).find("iframe").length){return}t(o.container).css({width:s,height:l,opacity:0}).show().animate({opacity:1},200);n.setTimeout(function(){o.load(a.iframe+(a.video?"&autoplay=1":""),{width:s,height:l},function(t){r.$("container").addClass("videoplay");t.scale({width:r._stageWidth,height:r._stageHeight,iframelimit:a.video?r._options.maxVideoSize:i})})},100);return}if(a.link){if(r._options.popupLinks){var c=n.open(a.link,"_blank")}else{n.location.href=a.link}return}});this.bind(e.IMAGE,function(e){r.setCounter(e.index);r.setInfo(e.index);var i=this.getNext(),n=this.getPrev();var a=[n,i];a.push(this.getNext(i),this.getPrev(n),r._controls.slides.length-1);var o=[];t.each(a,function(e,i){if(t.inArray(i,o)==-1){o.push(i)}});t.each(o,function(e,i){var n=r.getData(i),a=r._controls.slides[i],o=r.isFullscreen()&&n.big?n.big:n.image||n.iframe;if(n.iframe&&!n.image){a.isIframe=true}if(!a.ready){r._controls.slides[i].load(o,function(e){if(!e.isIframe){t(e.image).css("visibility","hidden")}r._scaleImage(e,{complete:function(e){if(!e.isIframe){t(e.image).css({opacity:0,visibility:"visible"}).animate({opacity:1},200)}}})})}})})}this.$("thumbnails, thumbnails-list").css({overflow:"hidden",position:"relative"});this.$("image-nav-right, image-nav-left").bind("click",function(t){if(s.clicknext){t.stopPropagation()}if(s.pauseOnInteraction){r.pause()}var e=/right/.test(this.className)?"next":"prev";r[e]()});t.each(["info","counter","image-nav"],function(t,e){if(s["show"+e.substr(0,1).toUpperCase()+e.substr(1).replace(/-/,"")]===false){H.moveOut(r.get(e.toLowerCase()))}});this.load();if(!s.keepSource&&!y){this._target.innerHTML=""}if(this.get("errors")){this.appendChild("target","errors")}this.appendChild("target","container");if(s.carousel){var l=0,c=s.show;this.bind(e.THUMBNAIL,function(){this.updateCarousel();if(++l==this.getDataLength()&&typeof c=="number"&&c>0){this._carousel.follow(c)}})}if(s.responsive){o.bind("resize",function(){if(!r.isFullscreen()){r.resize()}})}if(s.fullscreenDoubleTap){this.$("stage").bind("touchstart",function(){var t,e,i,n,a,o,s=function(t){return t.originalEvent.touches?t.originalEvent.touches[0]:t};r.$("stage").bind("touchmove",function(){t=0});return function(l){if(/(-left|-right)/.test(l.target.className)){return}o=H.timestamp();e=s(l).pageX;i=s(l).pageY;if(l.originalEvent.touches.length<2&&o-t<300&&e-n<20&&i-a<20){r.toggleFullscreen();l.preventDefault();return}t=o;n=e;a=i}}())}t.each(e.on.binds,function(e,i){if(t.inArray(i.hash,r._binds)==-1){r.bind(i.type,i.callback)}});return this},addTimer:function(){this._timer.add.apply(this._timer,H.array(arguments));return this},clearTimer:function(){this._timer.clear.apply(this._timer,H.array(arguments));return this},_getWH:function(){var e=this.$("container"),i=this.$("target"),n=this,a={},r;t.each(["width","height"],function(t,o){if(n._options[o]&&typeof n._options[o]==="number"){a[o]=n._options[o]}else{r=[H.parseValue(e.css(o)),H.parseValue(i.css(o)),e[o](),i[o]()];if(!n["_"+o]){r.splice(r.length,H.parseValue(e.css("min-"+o)),H.parseValue(i.css("min-"+o)))}a[o]=g.max.apply(g,r)}});if(n._userRatio){a.height=a.width*n._userRatio}return a},_createThumbnails:function(i){this.get("total").innerHTML=this.getDataLength();var r,o,s,l,c=this,u=this._options,h=i?this._data.length-i.length:0,f=h,d=[],p=0,g=y<8?"http://upload.wikimedia.org/wikipedia/commons/c/c0/Blank.gif":"%3D%3D",m=function(){var t=c.$("thumbnails").find(".active");if(!t.length){return false}return t.find("img").attr("src")}(),v=typeof u.thumbnails==="string"?u.thumbnails.toLowerCase():null,b=function(t){return a.defaultView&&a.defaultView.getComputedStyle?a.defaultView.getComputedStyle(o.container,null)[t]:l.css(t)},_=function(i,n,a){return function(){t(a).append(i);c.trigger({type:e.THUMBNAIL,thumbTarget:i,index:n,galleriaData:c.getData(n)})}},w=function(e){if(u.pauseOnInteraction){c.pause()}var i=t(e.currentTarget).data("index");if(c.getIndex()!==i){c.show(i)}e.preventDefault()},x=function(i,n){t(i.container).css("visibility","visible");c.trigger({type:e.THUMBNAIL,thumbTarget:i.image,index:i.data.order,galleriaData:c.getData(i.data.order)});if(typeof n=="function"){n.call(c,i)}},T=function(e,i){e.scale({width:e.data.width,height:e.data.height,crop:u.thumbCrop,margin:u.thumbMargin,canvas:u.useCanvas,position:u.thumbPosition,complete:function(e){var n=["left","top"],a=["Width","Height"],r,o,s=c.getData(e.index);t.each(a,function(i,a){r=a.toLowerCase();if(u.thumbCrop!==true||u.thumbCrop===r){o={};o[r]=e[r];t(e.container).css(o);o={};o[n[i]]=0;t(e.image).css(o)}e["outer"+a]=t(e.container)["outer"+a](true)});H.toggleQuality(e.image,u.thumbQuality===true||u.thumbQuality==="auto"&&e.original.width<e.width*3);if(u.thumbDisplayOrder&&!e.lazy){t.each(d,function(t,e){if(t===p&&e.ready&&!e.displayed){p++;e.displayed=true;x(e,i);return}})}else{x(e,i)}}})};if(!i){this._thumbnails=[];this.$("thumbnails").empty()}for(;this._data[h];h++){s=this._data[h];r=s.thumb||s.image;if((u.thumbnails===true||v=="lazy")&&(s.thumb||s.image)){o=new e.Picture(h);o.index=h;o.displayed=false;o.lazy=false;o.video=false;this.$("thumbnails").append(o.container);l=t(o.container);l.css("visibility","hidden");o.data={width:H.parseValue(b("width")),height:H.parseValue(b("height")),order:h,src:r};if(u.thumbCrop!==true){l.css({width:"auto",height:"auto"})}else{l.css({width:o.data.width,height:o.data.height})}if(v=="lazy"){l.addClass("lazy");o.lazy=true;o.load(g,{height:o.data.height,width:o.data.width})}else{o.load(r,T)}if(u.preload==="all"){o.preload(s.image)}}else if(s.iframe||v==="empty"||v==="numbers"){o={container:H.create("galleria-image"),image:H.create("img","span"),ready:true,data:{order:h}};if(v==="numbers"){t(o.image).text(h+1)}if(s.iframe){t(o.image).addClass("iframe")}this.$("thumbnails").append(o.container);n.setTimeout(_(o.image,h,o.container),50+h*20)}else{o={container:null,image:null}}t(o.container).add(u.keepSource&&u.linkSourceImages?s.original:null).data("index",h).bind(u.thumbEventType,w).data("thumbload",T);if(m===r){t(o.container).addClass("active")}this._thumbnails.push(o)}d=this._thumbnails.slice(f);return this},lazyLoad:function(e,i){var n=e.constructor==Array?e:[e],a=this,r=0;t.each(n,function(e,o){if(o>a._thumbnails.length-1){return}var s=a._thumbnails[o],l=s.data,c=function(){if(++r==n.length&&typeof i=="function"){i.call(a)}},u=t(s.container).data("thumbload");if(s.video){u.call(a,s,c)}else{s.load(l.src,function(t){u.call(a,t,c)})}});return this},lazyLoadChunks:function(t,e){var i=this.getDataLength(),a=0,r=0,o=[],s=[],l=this;e=e||0;for(;a<i;a++){s.push(a);if(++r==t||a==i-1){o.push(s);r=0;s=[]}}var c=function(t){var i=o.shift();if(i){n.setTimeout(function(){l.lazyLoad(i,function(){c(true)})},e&&t?e:0)}};c(false);return this},_run:function(){var a=this;a._createThumbnails();H.wait({timeout:1e4,until:function(){if(e.OPERA){a.$("stage").css("display","inline-block")}a._stageWidth=a.$("stage").width();a._stageHeight=a.$("stage").height();return a._stageWidth&&a._stageHeight>50},success:function(){A.push(a);if(a._options.swipe){var r=a.$("images").width(a.getDataLength()*a._stageWidth);t.each(new Array(a.getDataLength()),function(i){var n=new e.Picture,o=a.getData(i);t(n.container).css({position:"absolute",top:0,left:a._stageWidth*i}).prepend(a._layers[i]=t(H.create("galleria-layer")).css({position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:2})[0]).appendTo(r);if(o.video){O(n.container)}a._controls.slides.push(n);var s=new e.Picture;s.isIframe=true;t(s.container).attr("class","galleria-frame").css({position:"absolute",top:0,left:0,zIndex:4,background:"#000",display:"none"}).appendTo(n.container);a._controls.frames.push(s)});a.finger.setup()}H.show(a.get("counter"));if(a._options.carousel){a._carousel.bindControls()}if(a._options.autoplay){a.pause();if(typeof a._options.autoplay==="number"){a._playtime=a._options.autoplay}a._playing=true}if(a._firstrun){if(a._options.autoplay){a.trigger(e.PLAY)}if(typeof a._options.show==="number"){a.show(a._options.show)}return}a._firstrun=true;if(e.History){e.History.change(function(t){if(isNaN(t)){n.history.go(-1)}else{a.show(t,i,true)}})}a.trigger(e.READY);e.theme.init.call(a,a._options);t.each(e.ready.callbacks,function(t,e){if(typeof e=="function"){e.call(a,a._options)}});e.ready.callbacks=[];a._options.extend.call(a,a._options);if(/^[0-9]{1,4}$/.test(d)&&e.History){a.show(d,i,true)}else if(a._data[a._options.show]){a.show(a._options.show)}if(a._options.autoplay){a.trigger(e.PLAY)}},error:function(){e.raise("Stage width or height is too small to show the gallery. Traced measures: width:"+a._stageWidth+"px, height: "+a._stageHeight+"px.",true)}})},load:function(i,n,a){var r=this,o=this._options;this._data=[];this._thumbnails=[];this.$("thumbnails").empty();if(typeof n==="function"){a=n;n=null}i=i||o.dataSource;n=n||o.dataSelector;a=a||o.dataConfig;if(t.isPlainObject(i)){i=[i]}if(t.isArray(i)){if(this.validate(i)){this._data=i}else{e.raise("Load failed: JSON Array not valid.")}}else{n+=",.video,.iframe";t(i).find(n).each(function(e,i){i=t(i);var n={},o=i.parent(),s=o.attr("href"),l=o.attr("rel");if(s&&(i[0].nodeName=="IMG"||i.hasClass("video"))&&I(s)){n.video=s}else if(s&&i.hasClass("iframe")){n.iframe=s}else{n.image=n.big=s}if(l){n.big=l}t.each("big title description link layer image".split(" "),function(t,e){if(i.data(e)){n[e]=i.data(e).toString()}});if(!n.big){n.big=n.image}r._data.push(t.extend({title:i.attr("title")||"",thumb:i.attr("src"),image:i.attr("src"),big:i.attr("src"),description:i.attr("alt")||"",link:i.attr("longdesc"),original:i.get(0)},n,a(i)))})}if(typeof o.dataSort=="function"){s.sort.call(this._data,o.dataSort)}else if(o.dataSort=="random"){this._data.sort(function(){return g.round(g.random())-.5})}if(this.getDataLength()){this._parseData(function(){this.trigger(e.DATA)})}return this},_parseData:function(e){var n=this,a,r=false,o=function(){var i=true;t.each(n._data,function(t,e){if(e.loading){i=false;return false}});if(i&&!r){r=true;e.call(n)}};t.each(this._data,function(e,r){a=n._data[e];if("thumb"in r===false){a.thumb=r.image}if(!r.big){a.big=r.image}if("video"in r){var s=I(r.video);if(s){a.iframe=new S(s.provider,s.id).embed()+function(){if(typeof n._options[s.provider]=="object"){var e="?",i=[];t.each(n._options[s.provider],function(t,e){i.push(t+"="+e)});if(s.provider=="youtube"){i=["wmode=opaque"].concat(i)}return e+i.join("&")}return""}();if(!a.thumb||!a.image){t.each(["thumb","image"],function(t,e){if(e=="image"&&!n._options.videoPoster){a.image=i;return}var r=new S(s.provider,s.id);if(!a[e]){a.loading=true;r.getMedia(e,function(t,e){return function(i){t[e]=i;if(e=="image"&&!t.big){t.big=t.image}delete t.loading;o()}}(a,e))}})}}}});o();return this},destroy:function(){this.$("target").data("galleria",null);this.$("container").unbind("galleria");this.get("target").innerHTML=this._original.html;this.clearTimer();H.removeFromArray(D,this);H.removeFromArray(A,this);if(e._waiters.length){t.each(e._waiters,function(t,e){if(e)n.clearTimeout(e)})}return this},splice:function(){var t=this,e=H.array(arguments);n.setTimeout(function(){s.splice.apply(t._data,e);t._parseData(function(){t._createThumbnails()})},2);return t},push:function(){var t=this,e=H.array(arguments);if(e.length==1&&e[0].constructor==Array){e=e[0]}n.setTimeout(function(){s.push.apply(t._data,e);t._parseData(function(){t._createThumbnails(e)})},2);return t},_getActive:function(){return this._controls.getActive()},validate:function(t){return true},bind:function(t,e){t=k(t);this.$("container").bind(t,this.proxy(e));return this},unbind:function(t){t=k(t);this.$("container").unbind(t);return this},trigger:function(e){e=typeof e==="object"?t.extend(e,{scope:this}):{type:k(e),scope:this};this.$("container").trigger(e);return this},addIdleState:function(t,e,i,n){this._idle.add.apply(this._idle,H.array(arguments));return this},removeIdleState:function(t){this._idle.remove.apply(this._idle,H.array(arguments));return this},enterIdleMode:function(){this._idle.hide();return this},exitIdleMode:function(){this._idle.showAll();return this},enterFullscreen:function(t){this._fullscreen.enter.apply(this,H.array(arguments));return this},exitFullscreen:function(t){this._fullscreen.exit.apply(this,H.array(arguments));return this},toggleFullscreen:function(t){this._fullscreen[this.isFullscreen()?"exit":"enter"].apply(this,H.array(arguments));return this},bindTooltip:function(t,e){this._tooltip.bind.apply(this._tooltip,H.array(arguments));return this},defineTooltip:function(t,e){this._tooltip.define.apply(this._tooltip,H.array(arguments));return this},refreshTooltip:function(t){this._tooltip.show.apply(this._tooltip,H.array(arguments));return this},openLightbox:function(){this._lightbox.show.apply(this._lightbox,H.array(arguments));return this},closeLightbox:function(){this._lightbox.hide.apply(this._lightbox,H.array(arguments));return this},hasVariation:function(e){return t.inArray(e,this._options.variation.split(/\s+/))>-1},getActiveImage:function(){var t=this._getActive();return t?t.image:i},getActiveThumb:function(){return this._thumbnails[this._active].image||i},getMousePosition:function(t){return{x:t.pageX-this.$("container").offset().left,y:t.pageY-this.$("container").offset().top}},addPan:function(e){if(this._options.imageCrop===false){return}e=t(e||this.getActiveImage());var i=this,n=e.width()/2,a=e.height()/2,r=parseInt(e.css("left"),10),o=parseInt(e.css("top"),10),s=r||0,l=o||0,c=0,u=0,h=false,f=H.timestamp(),d=0,p=0,m=function(t,i,n){if(t>0){p=g.round(g.max(t*-1,g.min(0,i)));if(d!==p){d=p;if(y===8){e.parent()["scroll"+n](p*-1)}else{var a={};a[n.toLowerCase()]=p;e.css(a)}}}},v=function(t){if(H.timestamp()-f<50){return}h=true;n=i.getMousePosition(t).x;a=i.getMousePosition(t).y},b=function(t){if(!h){return}c=e.width()-i._stageWidth;u=e.height()-i._stageHeight;r=n/i._stageWidth*c*-1;o=a/i._stageHeight*u*-1;s+=(r-s)/i._options.imagePanSmoothness;l+=(o-l)/i._options.imagePanSmoothness;m(u,l,"Top");m(c,s,"Left")};if(y===8){e.parent().scrollTop(l*-1).scrollLeft(s*-1);e.css({top:0,left:0})}this.$("stage").unbind("mousemove",v).bind("mousemove",v);this.addTimer("pan"+i._id,b,50,true);return this},proxy:function(t,e){if(typeof t!=="function"){return m}e=e||this;return function(){return t.apply(e,H.array(arguments))}},removePan:function(){this.$("stage").unbind("mousemove");this.clearTimer("pan"+this._id);return this},addElement:function(e){var i=this._dom;t.each(H.array(arguments),function(t,e){i[e]=H.create("galleria-"+e)});return this},attachKeyboard:function(t){this._keyboard.attach.apply(this._keyboard,H.array(arguments));return this},detachKeyboard:function(){this._keyboard.detach.apply(this._keyboard,H.array(arguments));return this},appendChild:function(t,e){this.$(t).append(this.get(e)||e);return this},prependChild:function(t,e){this.$(t).prepend(this.get(e)||e);return this},remove:function(t){this.$(H.array(arguments).join(",")).remove();return this},append:function(t){var e,i;for(e in t){if(t.hasOwnProperty(e)){if(t[e].constructor===Array){for(i=0;t[e][i];i++){this.appendChild(e,t[e][i])}}else{this.appendChild(e,t[e])}}}return this},_scaleImage:function(e,i){e=e||this._controls.getActive();if(!e){return}var n,a=function(e){t(e.container).children(":first").css({top:g.max(0,H.parseValue(e.image.style.top)),left:g.max(0,H.parseValue(e.image.style.left)),width:H.parseValue(e.image.width),height:H.parseValue(e.image.height)})};i=t.extend({width:this._stageWidth,height:this._stageHeight,crop:this._options.imageCrop,max:this._options.maxScaleRatio,min:this._options.minScaleRatio,margin:this._options.imageMargin,position:this._options.imagePosition,iframelimit:this._options.maxVideoSize},i);if(this._options.layerFollow&&this._options.imageCrop!==true){if(typeof i.complete=="function"){n=i.complete;i.complete=function(){n.call(e,e);a(e)}}else{i.complete=a}}else{t(e.container).children(":first").css({top:0,left:0})}e.scale(i);return this},updateCarousel:function(){this._carousel.update();return this},resize:function(e,n){if(typeof e=="function"){n=e;e=i}e=t.extend({width:0,height:0},e);var a=this,r=this.$("container");t.each(e,function(t,i){if(!i){r[t]("auto");e[t]=a._getWH()[t]}});t.each(e,function(t,e){r[t](e)});return this.rescale(n)},rescale:function(n,a,r){var o=this;if(typeof n==="function"){r=n;n=i}var s=function(){o._stageWidth=n||o.$("stage").width();o._stageHeight=a||o.$("stage").height();if(o._options.swipe){t.each(o._controls.slides,function(e,i){o._scaleImage(i);t(i.container).css("left",o._stageWidth*e)});o.$("images").css("width",o._stageWidth*o.getDataLength())}else{o._scaleImage()}if(o._options.carousel){o.updateCarousel()}o._controls.frames[o._controls.active].scale({width:o._stageWidth,height:o._stageHeight,iframelimit:o._options.maxVideoSize});o.trigger(e.RESCALE);if(typeof r==="function"){r.call(o)}};s.call(o);return this},refreshImage:function(){this._scaleImage();if(this._options.imagePan){this.addPan()}return this},show:function(i,a,r){var o=this._options.swipe;if(!o&&(this._queue.length>3||i===false||!this._options.queue&&this._queue.stalled)){return}i=g.max(0,g.min(parseInt(i,10),this.getDataLength()-1));a=typeof a!=="undefined"?!!a:i<this.getIndex();r=r||false;if(!r&&e.History){e.History.set(i.toString());return}if(this.finger&&i!==this._active){this.finger.to=-(i*this.finger.width);this.finger.index=i}this._active=i;if(o){var l=this.getData(i),c=this;if(!l){return}var u=this.isFullscreen()&&l.big?l.big:l.image||l.iframe,h=this._controls.slides[i],f=h.isCached(u),d=this._thumbnails[i];var p={cached:f,index:i,rewind:a,imageTarget:h.image,thumbTarget:d.image,galleriaData:l};this.trigger(t.extend(p,{type:e.LOADSTART}));t(c._thumbnails[i].container).addClass("active").siblings(".active").removeClass("active");c.$("container").removeClass("videoplay");var m=function(){c._layers[i].innerHTML=c.getData().layer||"";c.trigger(t.extend(p,{type:e.LOADFINISH}));c._playCheck()};n.setTimeout(function(){if(!h.ready){if(l.iframe&&!l.image){h.isIframe=true}h.load(u,function(i){c._scaleImage(i,m).trigger(t.extend(p,{type:e.IMAGE}));m()})}else{c.trigger(t.extend(p,{type:e.IMAGE}));m()}},800)}else{s.push.call(this._queue,{index:i,rewind:a});if(!this._queue.stalled){this._show()}}return this},_show:function(){var a=this,r=this._queue[0],o=this.getData(r.index);if(!o){return}var l=this.isFullscreen()&&o.big?o.big:o.image||o.iframe,c=this._controls.getActive(),u=this._controls.getNext(),h=u.isCached(l),f=this._thumbnails[r.index],d=function(){t(u.image).trigger("mouseup")};a.$("container").toggleClass("iframe",!!o.isIframe).removeClass("videoplay");var p=function(r,o,l,c,u){return function(){var h;F.active=false;H.toggleQuality(o.image,a._options.imageQuality);a._layers[a._controls.active].innerHTML="";t(l.container).css({zIndex:0,opacity:0}).show();t(l.container).find("iframe, .galleria-videoicon").remove();t(a._controls.frames[a._controls.active].container).hide();t(o.container).css({zIndex:1,left:0,top:0}).show();a._controls.swap();if(a._options.imagePan){a.addPan(o.image)}if(r.iframe&&r.image||r.link||a._options.lightbox||a._options.clicknext){t(o.image).css({cursor:"pointer"}).bind("mouseup",function(o){if(typeof o.which=="number"&&o.which>1){return}if(r.iframe){if(a.isPlaying()){a.pause()}var s=a._controls.frames[a._controls.active],l=a._stageWidth,c=a._stageHeight;t(s.container).css({width:l,height:c,opacity:0}).show().animate({opacity:1},200);n.setTimeout(function(){s.load(r.iframe+(r.video?"&autoplay=1":""),{width:l,height:c},function(t){a.$("container").addClass("videoplay");t.scale({width:a._stageWidth,height:a._stageHeight,iframelimit:r.video?a._options.maxVideoSize:i})})},100);return}if(a._options.clicknext&&!e.TOUCH){if(a._options.pauseOnInteraction){a.pause()}a.next();return}if(r.link){if(a._options.popupLinks){h=n.open(r.link,"_blank")}else{n.location.href=r.link}return}if(a._options.lightbox){a.openLightbox()}})}a._playCheck();a.trigger({type:e.IMAGE,index:c.index,imageTarget:o.image,thumbTarget:u.image,galleriaData:r});s.shift.call(a._queue);a._queue.stalled=false;if(a._queue.length){a._show()}}}(o,u,c,r,f);if(this._options.carousel&&this._options.carouselFollow){this._carousel.follow(r.index)}if(this._options.preload){var g,m,v=this.getNext(),y;try{for(m=this._options.preload;m>0;m--){g=new e.Picture;y=a.getData(v);g.preload(this.isFullscreen()&&y.big?y.big:y.image);v=a.getNext(v)}}catch(b){}}H.show(u.container);u.isIframe=o.iframe&&!o.image;t(a._thumbnails[r.index].container).addClass("active").siblings(".active").removeClass("active");a.trigger({type:e.LOADSTART,cached:h,index:r.index,rewind:r.rewind,imageTarget:u.image,thumbTarget:f.image,galleriaData:o});a._queue.stalled=true;u.load(l,function(n){var s=t(a._layers[1-a._controls.active]).html(o.layer||"").hide();a._scaleImage(n,{complete:function(n){if("image"in c){H.toggleQuality(c.image,false)}H.toggleQuality(n.image,false);a.removePan();a.setInfo(r.index);a.setCounter(r.index);if(o.layer){s.show();if(o.iframe&&o.image||o.link||a._options.lightbox||a._options.clicknext){s.css("cursor","pointer").unbind("mouseup").mouseup(d)}}if(o.video&&o.image){O(n.container)}var l=a._options.transition;t.each({initial:c.image===null,touch:e.TOUCH,fullscreen:a.isFullscreen()},function(t,e){if(e&&a._options[t+"Transition"]!==i){l=a._options[t+"Transition"];return false}});if(l in F.effects===false){p()}else{var u={prev:c.container,next:n.container,rewind:r.rewind,speed:a._options.transitionSpeed||400};F.active=true;F.init.call(a,l,u,p)}a.trigger({type:e.LOADFINISH,cached:h,index:r.index,rewind:r.rewind,imageTarget:n.image,thumbTarget:a._thumbnails[r.index].image,galleriaData:a.getData(r.index)})}})})},getNext:function(t){t=typeof t==="number"?t:this.getIndex();return t===this.getDataLength()-1?0:t+1},getPrev:function(t){t=typeof t==="number"?t:this.getIndex();return t===0?this.getDataLength()-1:t-1},next:function(){if(this.getDataLength()>1){this.show(this.getNext(),false)}return this},prev:function(){if(this.getDataLength()>1){this.show(this.getPrev(),true)}return this},get:function(t){return t in this._dom?this._dom[t]:null},getData:function(t){return t in this._data?this._data[t]:this._data[this._active]},getDataLength:function(){return this._data.length},getIndex:function(){return typeof this._active==="number"?this._active:false},getStageHeight:function(){return this._stageHeight},getStageWidth:function(){return this._stageWidth},getOptions:function(t){return typeof t==="undefined"?this._options:this._options[t]},setOptions:function(e,i){if(typeof e==="object"){t.extend(this._options,e)}else{this._options[e]=i}return this},play:function(t){this._playing=true;this._playtime=t||this._playtime;this._playCheck();this.trigger(e.PLAY);return this},pause:function(){this._playing=false;this.trigger(e.PAUSE);return this},playToggle:function(t){return this._playing?this.pause():this.play(t)},isPlaying:function(){return this._playing},isFullscreen:function(){return this._fullscreen.active},_playCheck:function(){var t=this,i=0,n=20,a=H.timestamp(),r="play"+this._id;if(this._playing){this.clearTimer(r);var o=function(){i=H.timestamp()-a;if(i>=t._playtime&&t._playing){t.clearTimer(r);t.next();return}if(t._playing){t.trigger({type:e.PROGRESS,percent:g.ceil(i/t._playtime*100),seconds:g.floor(i/1e3),milliseconds:i});t.addTimer(r,o,n)}};t.addTimer(r,o,n)}},setPlaytime:function(t){this._playtime=t;return this},setIndex:function(t){this._active=t;return this},setCounter:function(t){if(typeof t==="number"){t++}else if(typeof t==="undefined"){t=this.getIndex()+1}this.get("current").innerHTML=t;if(y){var e=this.$("counter"),i=e.css("opacity");if(parseInt(i,10)===1){H.removeAlpha(e[0])}else{this.$("counter").css("opacity",i)}}return this},setInfo:function(e){var i=this,n=this.getData(e);t.each(["title","description"],function(t,e){var a=i.$("info-"+e);if(!!n[e]){a[n[e].length?"show":"hide"]().html(n[e])}else{a.empty().hide()}});return this},hasInfo:function(t){var e="title description".split(" "),i;for(i=0;e[i];i++){if(!!this.getData(t)[e[i]]){return true}}return false},jQuery:function(e){var i=this,n=[];t.each(e.split(","),function(e,a){a=t.trim(a);if(i.get(a)){n.push(a)}});var a=t(i.get(n.shift()));t.each(n,function(t,e){a=a.add(i.get(e))});return a},$:function(t){return this.jQuery.apply(this,H.array(arguments))}};t.each(x,function(t,i){var n=/_/.test(i)?i.replace(/_/g,""):i;e[i.toUpperCase()]="galleria."+n});t.extend(e,{IE9:y===9,IE8:y===8,IE7:y===7,IE6:y===6,IE:y,WEBKIT:/webkit/.test(f),CHROME:/chrome/.test(f),SAFARI:/safari/.test(f)&&!/chrome/.test(f),QUIRK:y&&a.compatMode&&a.compatMode==="BackCompat",MAC:/mac/.test(navigator.platform.toLowerCase()),OPERA:!!n.opera,IPHONE:/iphone/.test(f),IPAD:/ipad/.test(f),ANDROID:/android/.test(f),TOUCH:"ontouchstart"in a});e.addTheme=function(i){if(!i.name){e.raise("No theme name specified")}if(typeof i.defaults!=="object"){i.defaults={}}else{i.defaults=T(i.defaults)}var a=false,r;if(typeof i.css==="string"){t("link").each(function(t,e){r=new RegExp(i.css);if(r.test(e.href)){a=true;z(i);return false}});if(!a){t(function(){t("script").each(function(t,e){r=new RegExp("galleria\\."+i.name.toLowerCase()+"\\.");if(r.test(e.src)){a=e.src.replace(/[^\/]*$/,"")+i.css;n.setTimeout(function(){H.loadCSS(a,"galleria-theme",function(){z(i)})},1)}});if(!a){e.raise("No theme CSS loaded")}})}}else{z(i)}return i};e.loadTheme=function(i,a){if(t("script").filter(function(){return t(this).attr("src")==i}).length){return}var r=false,o;t(n).load(function(){if(!r){o=n.setTimeout(function(){if(!r&&!e.theme){e.raise("Galleria had problems loading theme at "+i+". Please check theme path or load manually.",true)}},2e4)}});e.unloadTheme();H.loadScript(i,function(){r=true;n.clearTimeout(o)});return e};e.unloadTheme=function(){if(typeof e.theme=="object"){t("script").each(function(i,n){if(new RegExp("galleria\\."+e.theme.name+"\\.").test(n.src)){t(n).remove()}});e.theme=i}return e};e.get=function(t){if(!!D[t]){return D[t]}else if(typeof t!=="number"){return D}else{e.raise("Gallery index "+t+" not found")}};e.configure=function(i,n){var a={};if(typeof i=="string"&&n){a[i]=n;i=a}else{t.extend(a,i)}e.configure.options=a;t.each(e.get(),function(t,e){e.setOptions(a)});return e};e.configure.options={};e.on=function(i,n){if(!i){return}n=n||m;var a=i+n.toString().replace(/\s/g,"")+H.timestamp();t.each(e.get(),function(t,e){e._binds.push(a);e.bind(i,n)});e.on.binds.push({type:i,callback:n,hash:a});return e};e.on.binds=[];e.run=function(i,n){if(t.isFunction(n)){n={extend:n}}t(i||"#galleria").galleria(n);return e};e.addTransition=function(t,i){F.effects[t]=i;return e};e.utils=H;e.log=function(){var e=H.array(arguments);if("console"in n&&"log"in n.console){try{return n.console.log.apply(n.console,e)}catch(i){t.each(e,function(){n.console.log(this)})}}else{return n.alert(e.join("<br>"))}};e.ready=function(i){if(typeof i!="function"){return e}t.each(A,function(t,e){i.call(e,e._options)});e.ready.callbacks.push(i);return e};e.ready.callbacks=[];e.raise=function(e,i){var n=i?"Fatal error":"Error",a={color:"#fff",position:"absolute",top:0,left:0,zIndex:1e5},r=function(e){var r='<div style="padding:4px;margin:0 0 2px;background:#'+(i?"811":"222")+';">'+(i?"<strong>"+n+": </strong>":"")+e+"</div>";t.each(D,function(){var t=this.$("errors"),e=this.$("target");if(!t.length){e.css("position","relative");t=this.addElement("errors").appendChild("target","errors").$("errors").css(a)}t.append(r)});if(!D.length){t("<div>").css(t.extend(a,{position:"fixed"})).append(r).appendTo(b().body)}};if(c){r(e);if(i){throw new Error(n+": "+e)}}else if(i){if(L){return}L=true;i=false;r("Gallery could not load.")}};e.version=l;e.requires=function(t,i){i=i||"You need to upgrade Galleria to version "+t+" to use one or more components.";if(e.version<t){e.raise(i,true)}return e};e.Picture=function(e){this.id=e||null;this.image=null;this.container=H.create("galleria-image");t(this.container).css({overflow:"hidden",position:"relative"});this.original={width:0,height:0};this.ready=false;this.isIframe=false};e.Picture.prototype={cache:{},show:function(){H.show(this.image)
},hide:function(){H.moveOut(this.image)},clear:function(){this.image=null},isCached:function(t){return!!this.cache[t]},preload:function(e){t(new Image).load(function(t,e){return function(){e[t]=t}}(e,this.cache)).attr("src",e)},load:function(i,a,r){if(typeof a=="function"){r=a;a=null}if(this.isIframe){var o="if"+(new Date).getTime();var s=this.image=t("<iframe>",{src:i,frameborder:0,id:o,allowfullscreen:true,css:{visibility:"hidden"}})[0];if(a){t(s).css(a)}t(this.container).find("iframe,img").remove();this.container.appendChild(this.image);t("#"+o).load(function(e,i){return function(){n.setTimeout(function(){t(e.image).css("visibility","visible");if(typeof i=="function"){i.call(e,e)}},10)}}(this,r));return this.container}this.image=new Image;if(e.IE8){t(this.image).css("filter","inherit")}var l=false,c=false,u=t(this.container),f=t(this.image),d=function(){if(!l){l=true;n.setTimeout(function(t,e){return function(){t.attr("src",e+"?"+H.timestamp())}}(t(this),i),50)}else{if(h){t(this).attr("src",h)}else{e.raise("Image not found: "+i)}}},p=function(i,r,o){return function(){var s=function(){t(this).unbind("load");i.original=a||{height:this.height,width:this.width};if(e.HAS3D){this.style.MozTransform=this.style.webkitTransform="translate3d(0,0,0)"}u.append(this);i.cache[o]=o;if(typeof r=="function"){n.setTimeout(function(){r.call(i,i)},1)}};if(!this.width||!this.height){n.setTimeout(function(i){return function(){if(i.width&&i.height){s.call(i)}else{if(!c){t(new Image).load(p).attr("src",i.src);c=true}else{e.raise("Could not extract width/height from image: "+i.src+". Traced measures: width:"+i.width+"px, height: "+i.height+"px.")}}}}(this),2)}else{s.call(this)}}}(this,r,i);u.find("iframe,img").remove();f.css("display","block");H.hide(this.image);t.each("minWidth minHeight maxWidth maxHeight".split(" "),function(t,e){f.css(e,/min/.test(e)?"0":"none")});f.load(p).bind("error",d).attr("src",i);return this.container},scale:function(n){var a=this;n=t.extend({width:0,height:0,min:i,max:i,margin:0,complete:m,position:"center",crop:false,canvas:false,iframelimit:i},n);if(this.isIframe){var r=n.width,o=n.height,s,l;if(n.iframelimit){var c=g.min(n.iframelimit/r,n.iframelimit/o);if(c<1){s=r*c;l=o*c;t(this.image).css({top:o/2-l/2,left:r/2-s/2,position:"absolute"})}else{t(this.image).css({top:0,left:0})}}t(this.image).width(s||r).height(l||o).removeAttr("width").removeAttr("height");t(this.container).width(r).height(o);n.complete.call(a,a);try{if(this.image.contentWindow){t(this.image.contentWindow).trigger("resize")}}catch(u){}return this.container}if(!this.image){return this.container}var h,f,d=t(a.container),p;H.wait({until:function(){h=n.width||d.width()||H.parseValue(d.css("width"));f=n.height||d.height()||H.parseValue(d.css("height"));return h&&f},success:function(){var e=(h-n.margin*2)/a.original.width,i=(f-n.margin*2)/a.original.height,r=g.min(e,i),o=g.max(e,i),s={"true":o,width:e,height:i,"false":r,landscape:a.original.width>a.original.height?o:r,portrait:a.original.width<a.original.height?o:r},l=s[n.crop.toString()],c="";if(n.max){l=g.min(n.max,l)}if(n.min){l=g.max(n.min,l)}t.each(["width","height"],function(e,i){t(a.image)[i](a[i]=a.image[i]=g.round(a.original[i]*l))});t(a.container).width(h).height(f);if(n.canvas&&$){$.elem.width=a.width;$.elem.height=a.height;c=a.image.src+":"+a.width+"x"+a.height;a.image.src=$.cache[c]||function(t){$.context.drawImage(a.image,0,0,a.original.width*l,a.original.height*l);try{p=$.elem.toDataURL();$.length+=p.length;$.cache[t]=p;return p}catch(e){return a.image.src}}(c)}var u={},d={},m=function(e,i,n){var r=0;if(/\%/.test(e)){var o=parseInt(e,10)/100,s=a.image[i]||t(a.image)[i]();r=g.ceil(s*-1*o+n*o)}else{r=H.parseValue(e)}return r},v={top:{top:0},left:{left:0},right:{left:"100%"},bottom:{top:"100%"}};t.each(n.position.toLowerCase().split(" "),function(t,e){if(e==="center"){e="50%"}u[t?"top":"left"]=e});t.each(u,function(e,i){if(v.hasOwnProperty(i)){t.extend(d,v[i])}});u=u.top?t.extend(u,d):d;u=t.extend({top:"50%",left:"50%"},u);t(a.image).css({position:"absolute",top:m(u.top,"height",f),left:m(u.left,"width",h)});a.show();a.ready=true;n.complete.call(a,a)},error:function(){e.raise("Could not scale image: "+a.image.src)},timeout:1e3});return this}};t.extend(t.easing,{galleria:function(t,e,i,n,a){if((e/=a/2)<1){return n/2*e*e*e+i}return n/2*((e-=2)*e*e+2)+i},galleriaIn:function(t,e,i,n,a){return n*(e/=a)*e+i},galleriaOut:function(t,e,i,n,a){return-n*(e/=a)*(e-2)+i}});e.Fastclick=function(){var i=/iP(ad|hone|od)/.test(navigator.userAgent),r=i&&/OS 4_\d(_\d)?/.test(navigator.userAgent),o=i&&/OS ([6-9]|\d{2})_\d/.test(navigator.userAgent);return{init:function(i){var a,r=this;this.trackingClick=false;this.trackingClickStart=0;this.targetElement=null;this.touchStartX=0;this.touchStartY=0;this.lastTouchIdentifier=0;this.layer=i;t.each(["Click","TouchStart","TouchMove","TouchEnd","TouchCancel"],function(t,e){r["on"+e]=function(t){return function(){t.apply(r,arguments)}}(r["on"+e])});if(!e.TOUCH){return}i.addEventListener("click",this.onClick,true);i.addEventListener("touchstart",this.onTouchStart,false);i.addEventListener("touchmove",this.onTouchMove,false);i.addEventListener("touchend",this.onTouchEnd,false);i.addEventListener("touchcancel",this.onTouchCancel,false);if(!n.Event.prototype.stopImmediatePropagation){i.removeEventListener=function(t,e,a){var r=n.Node.prototype.removeEventListener;if(t==="click"){r.call(i,t,e.hijacked||e,a)}else{r.call(i,t,e,a)}};i.addEventListener=function(t,e,a){var r=n.Node.prototype.addEventListener;if(t==="click"){r.call(i,t,e.hijacked||(e.hijacked=function(t){if(!t.propagationStopped){e(t)}}),a)}else{r.call(i,t,e,a)}}}if(typeof i.onclick==="function"){a=i.onclick;i.addEventListener("click",function(t){a(t)},false);i.onclick=null}},sendClick:function(t,e){var i,r;if(a.activeElement&&a.activeElement!==t){a.activeElement.blur()}r=e.changedTouches[0];i=a.createEvent("MouseEvents");i.initMouseEvent("click",true,true,n,1,r.screenX,r.screenY,r.clientX,r.clientY,false,false,false,false,0,null);i.forwardedTouchEvent=true;t.dispatchEvent(i)},onTouchStart:function(t){var e,a,o;e=t.target;a=t.targetTouches[0];if(i){o=n.getSelection();if(o.rangeCount&&!o.isCollapsed){return true}if(!r){if(a.identifier===this.lastTouchIdentifier){t.preventDefault();return false}this.lastTouchIdentifier=a.identifier}}this.trackingClick=true;this.trackingClickStart=t.timeStamp;this.targetElement=e;this.touchStartX=a.pageX;this.touchStartY=a.pageY;if(t.timeStamp-this.lastClickTime<200){t.preventDefault()}return true},touchHasMoved:function(t){var e=t.targetTouches[0];if(g.abs(e.pageX-this.touchStartX)>10||g.abs(e.pageY-this.touchStartY)>10){return true}return false},onTouchMove:function(t){if(!this.trackingClick){return true}if(this.targetElement!==t.target||this.touchHasMoved(t)){this.trackingClick=false;this.targetElement=null}return true},onTouchEnd:function(t){var e,i,r,s=this.targetElement;if(!this.trackingClick){return true}if(t.timeStamp-this.lastClickTime<200){this.cancelNextClick=true;return true}this.lastClickTime=t.timeStamp;e=this.trackingClickStart;this.trackingClick=false;this.trackingClickStart=0;if(o){r=t.changedTouches[0];s=t.target;s=a.elementFromPoint(r.pageX-n.pageXOffset,r.pageY-n.pageYOffset)}i=s.tagName.toLowerCase();t.preventDefault();this.sendClick(s,t);return false},onTouchCancel:function(){this.trackingClick=false;this.targetElement=null},onClick:function(t){var e;if(!this.targetElement){return true}if(t.forwardedTouchEvent){return true}e=this.targetElement;this.targetElement=null;if(this.trackingClick){this.trackingClick=false;return true}if(!t.cancelable){return true}if(this.cancelNextClick){this.cancelNextClick=false;if(t.stopImmediatePropagation){t.stopImmediatePropagation()}else{t.propagationStopped=true}t.stopPropagation();t.preventDefault();return false}return true}}}();e.Finger=function(){var i=g.abs;var o=e.HAS3D=function(){var e=a.createElement("p"),i,n=["webkit","O","ms","Moz",""],r,o=0,s="transform";b().html.insertBefore(e,null);for(;n[o];o++){r=n[o]?n[o]+"Transform":s;if(e.style[r]!==undefined){e.style[r]="translate3d(1px,1px,1px)";i=t(e).css(n[o]?"-"+n[o].toLowerCase()+"-"+s:s)}}b().html.removeChild(e);return i!==undefined&&i.length>0&&i!=="none"}();var s=function(){var t="RequestAnimationFrame";return n.requestAnimationFrame||n["webkit"+t]||n["moz"+t]||n["o"+t]||n["ms"+t]||function(t){n.setTimeout(t,1e3/60)}}();var l=function(e,i){this.config={start:0,duration:500,onchange:function(){},oncomplete:function(){},easing:function(t,e,i,n,a){return-n*((e=e/a-1)*e*e*e-1)+i}};if(!e.children.length){return}var a=this;t.extend(this.config,i);this.elem=e;this.child=e.children[0];this.to=this.pos=0;this.touching=false;this.start={};this.index=this.config.start;this.anim=0;if(!o){this.child.style.position="absolute";this.elem.style.position="relative"}t.each(["ontouchstart","ontouchmove","ontouchend","setup"],function(t,e){a[e]=function(t){return function(){t.apply(a,arguments)}}(a[e])});this.setX=function(){var t=a.child.style;if(!o){t.left=a.pos+"px";return}t.MozTransform=t.webkitTransform="translate3d("+a.pos+"px,0,0)";return};t(e).bind("touchstart",this.ontouchstart);t(n).bind("resize",this.setup);t(n).bind("orientationchange",this.setup);this.setup();!function r(){s(r);a.loop.call(a)}()};l.prototype={constructor:l,setup:function(){this.width=t(this.elem).width();this.length=g.ceil(t(this.child).width()/this.width);if(this.index!==0){this.index=g.max(0,g.min(this.index,this.length-1));this.pos=this.to=-this.width*this.index}},setPosition:function(t){this.pos=t;this.to=t},ontouchstart:function(t){var e=t.originalEvent.touches;this.start={pageX:e[0].pageX,pageY:e[0].pageY,time:+new Date};this.isScrolling=null;this.touching=true;this.deltaX=0;r.bind("touchmove",this.ontouchmove);r.bind("touchend",this.ontouchend)},ontouchmove:function(t){var e=t.originalEvent.touches;if(e&&e.length>1||t.scale&&t.scale!==1){return}this.deltaX=e[0].pageX-this.start.pageX;if(this.isScrolling===null){this.isScrolling=!!(this.isScrolling||i(this.deltaX)<i(e[0].pageY-this.start.pageY))}if(!this.isScrolling){t.preventDefault();this.deltaX/=!this.index&&this.deltaX>0||this.index==this.length-1&&this.deltaX<0?i(this.deltaX)/this.width+1.8:1;this.to=this.deltaX-this.index*this.width}t.stopPropagation()},ontouchend:function(t){this.touching=false;var e=+new Date-this.start.time<250&&i(this.deltaX)>40||i(this.deltaX)>this.width/2,n=!this.index&&this.deltaX>0||this.index==this.length-1&&this.deltaX<0;if(!this.isScrolling){this.show(this.index+(e&&!n?this.deltaX<0?1:-1:0))}r.unbind("touchmove",this.ontouchmove);r.unbind("touchend",this.ontouchend)},show:function(t){if(t!=this.index){this.config.onchange.call(this,t)}else{this.to=-(t*this.width)}},moveTo:function(t){if(t!=this.index){this.pos=this.to=-(t*this.width);this.index=t}},loop:function(){var t=this.to-this.pos,e=1;if(this.width&&t){e=g.max(.5,g.min(2,g.abs(t/this.width)))}if(this.touching||i(t)<=1){this.pos=this.to;if(this.anim){this.config.oncomplete(this.index)}this.anim=0}else{if(!this.anim){this.anim={v:this.pos,c:t,t:+new Date,f:e}}this.pos=this.config.easing(null,+new Date-this.anim.t,this.anim.v,this.anim.c,this.config.duration*this.anim.f)}this.setX()}};return l}();t.fn.galleria=function(i){var n=this.selector;if(!t(this).length){t(function(){if(t(n).length){t(n).galleria(i)}else{e.utils.wait({until:function(){return t(n).length},success:function(){t(n).galleria(i)},error:function(){e.raise('Init failed: Galleria could not find the element "'+n+'".')},timeout:5e3})}});return this}return this.each(function(){if(t.data(this,"galleria")){t.data(this,"galleria").destroy();t(this).find("*").hide()}t.data(this,"galleria",(new e).init(this,i))})}}(jQuery);(function (document) {
  $('nav ul li a').bind('click mouseover', function() {
    if (Bein.device !== 'phone') {
      var item = $(this).attr('class');
      $('.meganav').children().hide();
      if (item != 'home') {
        $('.meganav .' + item).show();
      } 
      $(this).parent().addClass('selected').siblings().removeClass('selected');
    }
  });
  
  $("#meganav").bind("mouseleave", function() {
    if (Bein.device !== 'phone') {
  	  $('.meganav').children().hide();
      $('nav ul li').removeClass('selected');
    }  
  });
  
}) (document);/*global $:false, Bein:false*/
/*jshint strict:true, camelcase:true, curly:true, eqeqeq:true, immed:true, indent:2, latedef:true, newcap:true, noarg:true, noempty:true, nonew:true, quotmark:single, undef:true, unused:true, trailing:true */
(function (window, document) {
  'use strict';
  window.Bein.module.feature = {
    intervalId : null,
    imgWidth : 990,
    direction : '-=',
    scrollPaused : false,
    wrapper : $('#centerpiece .features-inner-wrapper'),
    rightEdge : ($('#centerpiece .feature-article-box').size() - 1) * 990 + 'px',
    pageSize : $('#centerpiece .feature-article-box').size() - 1,
    livePage : 0,

    scrollFunction : function (dir, autoscroll) {
      if (autoscroll && this.scrollPaused) {
        /* pausing autoscroll */
        return;
      }
      /* AR language */
      else if (this.livePage >= this.pageSize && dir === '+=' && Bein.lang === 'ar') {
        /* last image? go to start */
        this.wrapper.stop(false, true).animate({left : '0'}, 500);
        this.livePage = 0;
        this.activePagination(this.livePage);
      } else if (this.livePage <= 0 && dir === '-=' && Bein.lang === 'ar') {
        /* first image? go to end */
        this.wrapper.stop(false, true).animate({left : this.rightEdge}, 500);
        this.livePage = this.pageSize;
        this.activePagination(this.livePage);
      }
      /* Other languages */
      else if (this.livePage >= this.pageSize && dir === '-=' && Bein.lang !== 'ar') {
        /* last image? go to start */
        this.wrapper.stop(false, true).animate({left : 0}, 500);
        this.livePage = 0;
        this.activePagination(this.livePage);
      } else if (this.livePage <= 0 && dir === '+=' && Bein.lang !== 'ar') {
        /* first image? go to end */
        this.wrapper.stop(false, true).animate({left : '-' + this.rightEdge}, 500);
        this.livePage = this.pageSize;
        this.activePagination(this.livePage);
      }
      /* Default move */
      else {
        /* animate in requested direction */
        if (Bein.lang === 'ar') {
          this.livePage = (dir === '+=') ? this.livePage + 1 : this.livePage - 1;
        } else {
          this.livePage = (dir === '+=') ? this.livePage - 1 : this.livePage + 1;
        }
        this.wrapper.stop(false, true).animate({
          left : dir + this.imgWidth
        }, 500);
        this.activePagination(this.livePage);
      }
    },

	/* function to display proper slide after clicking on certain page from pagination */
    toPage: function (pageNumber) {
      var dir = (Bein.lang === 'ar') ? 1 : -1;
      this.wrapper.stop(false, true).animate({
          left : this.imgWidth*(pageNumber) * dir
      }, 500);
      this.livePage = pageNumber;
      
      this.activePagination(this.livePage);
    },
    
    activePagination: function (activePage) {
    /*
      $('.centerpiece-pagination ul li').removeClass('active');
      $('.centerpiece-pagination ul li#article-' + activePage).addClass('active');
      */
    },

    init : function () {
      if (this.intervalId !== null) {
        clearInterval(this.intervalId);
      }
      this.direction = (Bein.lang === 'ar') ? '+=' : '-=';
      if (Bein.device === 'phone' && Bein.forceFullSite === false) {
        var myWidth = $(window).innerWidth();
        var myHeight = Math.ceil(myWidth * 0.4323);
        //var myHeight = Math.ceil(myWidth * 0.5625);
        var imgCount = $('#centerpiece img').size();
        this.imgWidth = myWidth;
        $('#centerpiece').css({height : myHeight + 'px'});
        $('#centerpiece .features-inner-wrapper').css({width : (myWidth * imgCount) + 'px'});
        $('#centerpiece .feature-article-box img').css({width : myWidth + 'px', height : myHeight + 'px'});
        $('#centerpiece .feature-article-box .article-info').css({width : (myWidth - 80) + 'px'});
        $('#centerpiece').css({visibility : 'visible'});
      } else {
        this.imgWidth = 990;
      }
      var pagination = '';
      /*pagination for feature asset - turned off on client request
      $('#centerpiece').append('<div class="centerpiece-pagination"><ul></ul></div>');
      $('.feature-article-box').each(function (i,e) {
        pagination = pagination + '<li id="article-' + i + '" onclick="window.Bein.module.feature.toPage('+ i +')"><span class="pagi-dot"></span></li>';
      });
      $('.centerpiece-pagination ul').append(pagination);
      this.activePagination(this.livePage);
      */
      this.rightEdge = ($('#centerpiece .feature-article-box').size() - 1) * this.imgWidth + 'px';
      this.intervalId = setInterval(function () {window.Bein.module.feature.scrollFunction(window.Bein.module.feature.direction, true);}, 4000);
    }
  };

  $(document).ready(function () {

    $('#centerpiece').hover(function () {
      window.Bein.module.feature.scrollPaused = true;
    }, function () {
      window.Bein.module.feature.scrollPaused = false;
    });

    $('.fa-arrow').click(function () {
      var dir = $(this).hasClass('right') ? '-=' : '+=';
      window.Bein.module.feature.scrollFunction(dir);
    });

    var width = 0;
    $('.feature-article-box').each(function () {
      width += $(this).outerWidth(true);
    });
    $('.features-inner-wrapper').css('width', width);

    window.Bein.module.feature.init();

  });

})(window, document);

$(document).ready(function(){   
  $('#resetPassword').validate({
    onkeyup: false,
    onfocusout: false,
    rules: {
      password: {
        required: true,
        minlength: 6
      },
      retipePassword: {
        required: true,
        minlength: 6,
        equalTo: "#password"
      }
    },
    messages: {
      password: "??E C? ?C E?? ???E C????? ?? 6 C??? ",
      retipePassword: "C?E???I ??E C? ?E?CE? ?? ???E C?????"
    },
    errorPlacement: function(error,element){
      var wrapper = element.parent();      
      error.appendTo(wrapper);      
    }        
  });
  
  $('#resetPasswordSubmit').live('click',function(){
   if( $('#resetPassword').valid() ){
     
    var password = $('#password').val();
    var retipePassClear = $('#retipePassword').val();
    var uuid = $('#uuid').val();
    var expiryTimestamp = $('#expiryTimestamp').val();
    var signature = $('#signature').val();
    var url = '/system/recovery/passwordreset?uuid='+uuid+'&expiryTimestamp='+expiryTimestamp+'&signature='+signature+'&password='+password;
    var resultInfo = $('#resetPasswordResult');
    
    $.ajax({
      url: url,       
      cache: false,
      type: 'POST',
      dataType: 'xml',                
      success: function(xml){                
        var result = xml.getElementsByTagName('recoveryPasswordReset');
        
        if ($(result).attr('success') == 'true'){          
          resultInfo.addClass('success');          
          resultInfo.text("??I E?E C?CIE E???? ???E C????? E??C?");
          resultInfo.show();
          $('#password').val('');
          $('#retipePassword').val('');
        } else {
          resultInfo.removeClass('success');
          resultInfo.text("??E O??C IC??C. C?E??I ?? ?? C?E??I C????E???? ?? ???E ???? C????E ?? ?I?I ???C??E ?C?IE ????I ?? C???E ?? ????");
          resultInfo.show();
          $('#password').val('');
          $('#retipePassword').val('');          
          }
      },
      error: function(){       
        resultInfo.addClass('error')
        resultInfo.text("I?? ?? C?CE?C?. C???C? C???C??E ?? ?I?I")
        resultInfo.show();                
      }
    });
  }    
    return false;
  });
});/*
 * Date prototype extensions. Doesn't depend on any
 * other code. Doens't overwrite existing methods.
 *
 * Adds dayNames, abbrDayNames, monthNames and abbrMonthNames static properties and isLeapYear,
 * isWeekend, isWeekDay, getDaysInMonth, getDayName, getMonthName, getDayOfYear, getWeekOfYear,
 * setDayOfYear, addYears, addMonths, addDays, addHours, addMinutes, addSeconds methods
 *
 * Copyright (c) 2006 J??rn Zaefferer and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 *
 * Additional methods and properties added by Kelvin Luck: firstDayOfWeek, dateFormat, zeroTime, asString, fromString -
 * I've added my name to these methods so you know who to blame if they are broken!
 * 
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 */

/**
 * An Array of day names starting with Sunday.
 * 
 * @example dayNames[0]
 * @result 'Sunday'
 *
 * @name dayNames
 * @type Array
 * @cat Plugins/Methods/Date
 */
Date.dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];

/**
 * An Array of abbreviated day names starting with Sun.
 * 
 * @example abbrDayNames[0]
 * @result 'Sun'
 *
 * @name abbrDayNames
 * @type Array
 * @cat Plugins/Methods/Date
 */
Date.abbrDayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];

/**
 * An Array of month names starting with Janurary.
 * 
 * @example monthNames[0]
 * @result 'January'
 *
 * @name monthNames
 * @type Array
 * @cat Plugins/Methods/Date
 */
Date.monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

/**
 * An Array of abbreviated month names starting with Jan.
 * 
 * @example abbrMonthNames[0]
 * @result 'Jan'
 *
 * @name monthNames
 * @type Array
 * @cat Plugins/Methods/Date
 */
Date.abbrMonthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

/**
 * The first day of the week for this locale.
 *
 * @name firstDayOfWeek
 * @type Number
 * @cat Plugins/Methods/Date
 * @author Kelvin Luck
 */
Date.firstDayOfWeek = 1;

/**
 * The format that string dates should be represented as (e.g. 'dd/mm/yyyy' for UK, 'mm/dd/yyyy' for US, 'yyyy-mm-dd' for Unicode etc).
 *
 * @name format
 * @type String
 * @cat Plugins/Methods/Date
 * @author Kelvin Luck
 */
Date.format = 'dd/mm/yyyy';
//Date.format = 'mm/dd/yyyy';
//Date.format = 'yyyy-mm-dd';
//Date.format = 'dd mmm yy';

/**
 * The first two numbers in the century to be used when decoding a two digit year. Since a two digit year is ambiguous (and date.setYear
 * only works with numbers < 99 and so doesn't allow you to set years after 2000) we need to use this to disambiguate the two digit year codes.
 *
 * @name format
 * @type String
 * @cat Plugins/Methods/Date
 * @author Kelvin Luck
 */
Date.fullYearStart = '20';

(function() {

  /**
   * Adds a given method under the given name 
   * to the Date prototype if it doesn't
   * currently exist.
   *
   * @private
   */
  function add(name, method) {
    if( !Date.prototype[name] ) {
      Date.prototype[name] = method;
    }
  };
  
  /**
   * Checks if the year is a leap year.
   *
   * @example var dtm = new Date("01/12/2008");
   * dtm.isLeapYear();
   * @result true
   *
   * @name isLeapYear
   * @type Boolean
   * @cat Plugins/Methods/Date
   */
  add("isLeapYear", function() {
    var y = this.getFullYear();
    return (y%4==0 && y%100!=0) || y%400==0;
  });
  
  /**
   * Checks if the day is a weekend day (Sat or Sun).
   *
   * @example var dtm = new Date("01/12/2008");
   * dtm.isWeekend();
   * @result false
   *
   * @name isWeekend
   * @type Boolean
   * @cat Plugins/Methods/Date
   */
  add("isWeekend", function() {
    return this.getDay()==0 || this.getDay()==6;
  });
  
  /**
   * Check if the day is a day of the week (Mon-Fri)
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.isWeekDay();
   * @result false
   * 
   * @name isWeekDay
   * @type Boolean
   * @cat Plugins/Methods/Date
   */
  add("isWeekDay", function() {
    return !this.isWeekend();
  });
  
  /**
   * Gets the number of days in the month.
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.getDaysInMonth();
   * @result 31
   * 
   * @name getDaysInMonth
   * @type Number
   * @cat Plugins/Methods/Date
   */
  add("getDaysInMonth", function() {
    return [31,(this.isLeapYear() ? 29:28),31,30,31,30,31,31,30,31,30,31][this.getMonth()];
  });
  
  /**
   * Gets the name of the day.
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.getDayName();
   * @result 'Saturday'
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.getDayName(true);
   * @result 'Sat'
   * 
   * @param abbreviated Boolean When set to true the name will be abbreviated.
   * @name getDayName
   * @type String
   * @cat Plugins/Methods/Date
   */
  add("getDayName", function(abbreviated) {
    return abbreviated ? Date.abbrDayNames[this.getDay()] : Date.dayNames[this.getDay()];
  });

  /**
   * Gets the name of the month.
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.getMonthName();
   * @result 'Janurary'
   *
   * @example var dtm = new Date("01/12/2008");
   * dtm.getMonthName(true);
   * @result 'Jan'
   * 
   * @param abbreviated Boolean When set to true the name will be abbreviated.
   * @name getDayName
   * @type String
   * @cat Plugins/Methods/Date
   */
  add("getMonthName", function(abbreviated) {
    return abbreviated ? Date.abbrMonthNames[this.getMonth()] : Date.monthNames[this.getMonth()];
  });

  /**
   * Get the number of the day of the year.
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.getDayOfYear();
   * @result 11
   * 
   * @name getDayOfYear
   * @type Number
   * @cat Plugins/Methods/Date
   */
  add("getDayOfYear", function() {
    var tmpdtm = new Date("1/1/" + this.getFullYear());
    return Math.floor((this.getTime() - tmpdtm.getTime()) / 86400000);
  });
  
  /**
   * Get the number of the week of the year.
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.getWeekOfYear();
   * @result 2
   * 
   * @name getWeekOfYear
   * @type Number
   * @cat Plugins/Methods/Date
   */
  add("getWeekOfYear", function() {
    return Math.ceil(this.getDayOfYear() / 7);
  });

  /**
   * Set the day of the year.
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.setDayOfYear(1);
   * dtm.toString();
   * @result 'Tue Jan 01 2008 00:00:00'
   * 
   * @name setDayOfYear
   * @type Date
   * @cat Plugins/Methods/Date
   */
  add("setDayOfYear", function(day) {
    this.setMonth(0);
    this.setDate(day);
    return this;
  });
  
  /**
   * Add a number of years to the date object.
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.addYears(1);
   * dtm.toString();
   * @result 'Mon Jan 12 2009 00:00:00'
   * 
   * @name addYears
   * @type Date
   * @cat Plugins/Methods/Date
   */
  add("addYears", function(num) {
    this.setFullYear(this.getFullYear() + num);
    return this;
  });
  
  /**
   * Add a number of months to the date object.
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.addMonths(1);
   * dtm.toString();
   * @result 'Tue Feb 12 2008 00:00:00'
   * 
   * @name addMonths
   * @type Date
   * @cat Plugins/Methods/Date
   */
  add("addMonths", function(num) {
    var tmpdtm = this.getDate();
    
    this.setMonth(this.getMonth() + num);
    
    if (tmpdtm > this.getDate())
      this.addDays(-this.getDate());
    
    return this;
  });
  
  /**
   * Add a number of days to the date object.
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.addDays(1);
   * dtm.toString();
   * @result 'Sun Jan 13 2008 00:00:00'
   * 
   * @name addDays
   * @type Date
   * @cat Plugins/Methods/Date
   */
  add("addDays", function(num) {
    //this.setDate(this.getDate() + num);
    this.setTime(this.getTime() + (num*86400000) );
    return this;
  });
  
  /**
   * Add a number of hours to the date object.
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.addHours(24);
   * dtm.toString();
   * @result 'Sun Jan 13 2008 00:00:00'
   * 
   * @name addHours
   * @type Date
   * @cat Plugins/Methods/Date
   */
  add("addHours", function(num) {
    this.setHours(this.getHours() + num);
    return this;
  });

  /**
   * Add a number of minutes to the date object.
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.addMinutes(60);
   * dtm.toString();
   * @result 'Sat Jan 12 2008 01:00:00'
   * 
   * @name addMinutes
   * @type Date
   * @cat Plugins/Methods/Date
   */
  add("addMinutes", function(num) {
    this.setMinutes(this.getMinutes() + num);
    return this;
  });
  
  /**
   * Add a number of seconds to the date object.
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.addSeconds(60);
   * dtm.toString();
   * @result 'Sat Jan 12 2008 00:01:00'
   * 
   * @name addSeconds
   * @type Date
   * @cat Plugins/Methods/Date
   */
  add("addSeconds", function(num) {
    this.setSeconds(this.getSeconds() + num);
    return this;
  });
  
  /**
   * Sets the time component of this Date to zero for cleaner, easier comparison of dates where time is not relevant.
   * 
   * @example var dtm = new Date();
   * dtm.zeroTime();
   * dtm.toString();
   * @result 'Sat Jan 12 2008 00:01:00'
   * 
   * @name zeroTime
   * @type Date
   * @cat Plugins/Methods/Date
   * @author Kelvin Luck
   */
  add("zeroTime", function() {
    this.setMilliseconds(0);
    this.setSeconds(0);
    this.setMinutes(0);
    this.setHours(0);
    return this;
  });
  
  /**
   * Returns a string representation of the date object according to Date.format.
   * (Date.toString may be used in other places so I purposefully didn't overwrite it)
   * 
   * @example var dtm = new Date("01/12/2008");
   * dtm.asString();
   * @result '12/01/2008' // (where Date.format == 'dd/mm/yyyy'
   * 
   * @name asString
   * @type Date
   * @cat Plugins/Methods/Date
   * @author Kelvin Luck
   */
  add("asString", function(format) {
    var r = format || Date.format;
    if (r.split('mm').length>1) { // ugly workaround to make sure we don't replace the m's in e.g. noveMber
      r = r.split('mmmm').join(this.getMonthName(false))
        .split('mmm').join(this.getMonthName(true))
        .split('mm').join(_zeroPad(this.getMonth()+1))
    } else {
      r = r.split('m').join(this.getMonth()+1);
    }
    r = r.split('yyyy').join(this.getFullYear())
      .split('yy').join((this.getFullYear() + '').substring(2))
      .split('dd').join(_zeroPad(this.getDate()))
      .split('d').join(this.getDate());
    return r;
  });
  
  /**
   * Returns a new date object created from the passed String according to Date.format or false if the attempt to do this results in an invalid date object
   * (We can't simple use Date.parse as it's not aware of locale and I chose not to overwrite it incase it's functionality is being relied on elsewhere)
   *
   * @example var dtm = Date.fromString("12/01/2008");
   * dtm.toString();
   * @result 'Sat Jan 12 2008 00:00:00' // (where Date.format == 'dd/mm/yyyy'
   * 
   * @name fromString
   * @type Date
   * @cat Plugins/Methods/Date
   * @author Kelvin Luck
   */
  Date.fromString = function(s)
  {
    var f = Date.format;
    
    var d = new Date('01/01/1970');
    
    if (s == '') return d;

    s = s.toLowerCase();
    var matcher = '';
    var order = [];
    var r = /(dd?d?|mm?m?|yy?yy?)+([^(m|d|y)])?/g;
    var results;
    while ((results = r.exec(f)) != null)
    {
      switch (results[1]) {
        case 'd':
        case 'dd':
        case 'm':
        case 'mm':
        case 'yy':
        case 'yyyy':
          matcher += '(\\d+\\d?\\d?\\d?)+';
          order.push(results[1].substr(0, 1));
          break;
        case 'mmm':
          matcher += '([a-z]{3})';
          order.push('M');
          break;
      }
      if (results[2]) {
        matcher += results[2];
      }
      
    }
    var dm = new RegExp(matcher);
    var result = s.match(dm);
    
    if (result) {
      for (var i=0; i<order.length; i++) {
        var res = result[i+1];
        switch(order[i]) {
          case 'd':
            d.setDate(res);
            break;
          case 'm':
            d.setMonth(Number(res)-1);
            break;
          case 'M':
            for (var j=0; j<Date.abbrMonthNames.length; j++) {
              if (Date.abbrMonthNames[j].toLowerCase() == res) break;
            }
            d.setMonth(j);
            break;
          case 'y':
            d.setYear(res);
            break;
        }
      }
    }

    return d;
  };
  
  // utility method
  var _zeroPad = function(num) {
    var s = '0'+num;
    return s.substring(s.length-2)
    //return ('0'+num).substring(-2); // doesn't work on IE :(
  };
  
})();/**
 * Copyright (c) 2008 Kelvin Luck (http://www.kelvinluck.com/)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 * .
 * $Id: jquery.datePicker.js 108 2011-11-17 21:19:57Z kelvin.luck@gmail.com $
 **/

(function($){
    
  $.fn.extend({
/**
 * Render a calendar table into any matched elements.
 * 
 * @param Object s (optional) Customize your calendars.
 * @option Number month The month to render (NOTE that months are zero based). Default is today's month.
 * @option Number year The year to render. Default is today's year.
 * @option Function renderCallback A reference to a function that is called as each cell is rendered and which can add classes and event listeners to the created nodes. Default is no callback.
 * @option Number showHeader Whether or not to show the header row, possible values are: $.dpConst.SHOW_HEADER_NONE (no header), $.dpConst.SHOW_HEADER_SHORT (first letter of each day) and $.dpConst.SHOW_HEADER_LONG (full name of each day). Default is $.dpConst.SHOW_HEADER_SHORT.
 * @option String hoverClass The class to attach to each cell when you hover over it (to allow you to use hover effects in IE6 which doesn't support the :hover pseudo-class on elements other than links). Default is dp-hover. Pass false if you don't want a hover class.
 * @type jQuery
 * @name renderCalendar
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('#calendar-me').renderCalendar({month:0, year:2007});
 * @desc Renders a calendar displaying January 2007 into the element with an id of calendar-me.
 *
 * @example
 * var testCallback = function($td, thisDate, month, year)
 * {
 * if ($td.is('.current-month') && thisDate.getDay() == 4) {
 *    var d = thisDate.getDate();
 *    $td.bind(
 *      'click',
 *      function()
 *      {
 *        alert('You clicked on ' + d + '/' + (Number(month)+1) + '/' + year);
 *      }
 *    ).addClass('thursday');
 *  } else if (thisDate.getDay() == 5) {
 *    $td.html('Friday the ' + $td.html() + 'th');
 *  }
 * }
 * $('#calendar-me').renderCalendar({month:0, year:2007, renderCallback:testCallback});
 * 
 * @desc Renders a calendar displaying January 2007 into the element with an id of calendar-me. Every Thursday in the current month has a class of "thursday" applied to it, is clickable and shows an alert when clicked. Every Friday on the calendar has the number inside replaced with text.
 **/
    renderCalendar  :   function(s)
    {
      var dc = function(a)
      {
        return document.createElement(a);
      };

      s = $.extend({}, $.fn.datePicker.defaults, s);
      
      if (s.showHeader != $.dpConst.SHOW_HEADER_NONE) {
        var headRow = $(dc('tr'));
        for (var i=Date.firstDayOfWeek; i<Date.firstDayOfWeek+7; i++) {
          var weekday = i%7;
          var day = Date.dayNames[weekday];
          headRow.append(
            jQuery(dc('th')).attr({'scope':'col', 'abbr':day, 'title':day, 'class':(weekday == 0 || weekday == 6 ? 'weekend' : 'weekday')}).html(s.showHeader == $.dpConst.SHOW_HEADER_SHORT ? day.substr(0, 1) : day)
          );
        }
      };
      
      var calendarTable = $(dc('table'))
                  .attr(
                    {
                      'cellspacing':2
                    }
                  )
                  .addClass('jCalendar')
                  .append(
                    (s.showHeader != $.dpConst.SHOW_HEADER_NONE ? 
                      $(dc('thead'))
                        .append(headRow)
                      :
                      dc('thead')
                    )
                  );
      var tbody = $(dc('tbody'));
      
      var today = (new Date()).zeroTime();
      today.setHours(12);
      
      var month = s.month == undefined ? today.getMonth() : s.month;
      var year = s.year || today.getFullYear();
      
      var currentDate = (new Date(year, month, 1, 12, 0, 0));
      
      
      var firstDayOffset = Date.firstDayOfWeek - currentDate.getDay() + 1;
      if (firstDayOffset > 1) firstDayOffset -= 7;
      var weeksToDraw = Math.ceil(( (-1*firstDayOffset+1) + currentDate.getDaysInMonth() ) /7);
      currentDate.addDays(firstDayOffset-1);
      
      var doHover = function(firstDayInBounds)
      {
        return function()
        {
          if (s.hoverClass) {
            var $this = $(this);
            if (!s.selectWeek) {
              $this.addClass(s.hoverClass);
            } else if (firstDayInBounds && !$this.is('.disabled')) {
              $this.parent().addClass('activeWeekHover');
            }
          }
        }
      };
      var unHover = function()
      {
        if (s.hoverClass) {
          var $this = $(this);
          $this.removeClass(s.hoverClass);
          $this.parent().removeClass('activeWeekHover');
        }
      };

      var w = 0;
      while (w++<weeksToDraw) {
        var r = jQuery(dc('tr'));
        var firstDayInBounds = s.dpController ? currentDate > s.dpController.startDate : false;
        for (var i=0; i<7; i++) {
          var thisMonth = currentDate.getMonth() == month;
          var d = $(dc('td'))
                .text(currentDate.getDate() + '')
                .addClass((thisMonth ? 'current-month ' : 'other-month ') +
                          (currentDate.isWeekend() ? 'weekend ' : 'weekday ') +
                          (thisMonth && currentDate.getTime() == today.getTime() ? 'today ' : '')
                )
                .data('datePickerDate', currentDate.asString())
                .hover(doHover(firstDayInBounds), unHover)
              ;
          r.append(d);
          if (s.renderCallback) {
            s.renderCallback(d, currentDate, month, year);
          }
          // addDays(1) fails in some locales due to daylight savings. See issue 39.
          //currentDate.addDays(1);
          // set the time to midday to avoid any weird timezone issues??
          currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()+1, 12, 0, 0);
        }
        tbody.append(r);
      }
      calendarTable.append(tbody);
      
      return this.each(
        function()
        {
          $(this).empty().append(calendarTable);
        }
      );
    },
/**
 * Create a datePicker associated with each of the matched elements.
 *
 * The matched element will receive a few custom events with the following signatures:
 *
 * dateSelected(event, date, $td, status)
 * Triggered when a date is selected. event is a reference to the event, date is the Date selected, $td is a jquery object wrapped around the TD that was clicked on and status is whether the date was selected (true) or deselected (false)
 * 
 * dpClosed(event, selected)
 * Triggered when the date picker is closed. event is a reference to the event and selected is an Array containing Date objects.
 *
 * dpMonthChanged(event, displayedMonth, displayedYear)
 * Triggered when the month of the popped up calendar is changed. event is a reference to the event, displayedMonth is the number of the month now displayed (zero based) and displayedYear is the year of the month.
 *
 * dpDisplayed(event, $datePickerDiv)
 * Triggered when the date picker is created. $datePickerDiv is the div containing the date picker. Use this event to add custom content/ listeners to the popped up date picker.
 *
 * @param Object s (optional) Customize your date pickers.
 * @option Number month The month to render when the date picker is opened (NOTE that months are zero based). Default is today's month.
 * @option Number year The year to render when the date picker is opened. Default is today's year.
 * @option String|Date startDate The first date date can be selected.
 * @option String|Date endDate The last date that can be selected.
 * @option Boolean inline Whether to create the datePicker as inline (e.g. always on the page) or as a model popup. Default is false (== modal popup)
 * @option Boolean createButton Whether to create a .dp-choose-date anchor directly after the matched element which when clicked will trigger the showing of the date picker. Default is true.
 * @option Boolean showYearNavigation Whether to display buttons which allow the user to navigate through the months a year at a time. Default is true.
 * @option Boolean closeOnSelect Whether to close the date picker when a date is selected. Default is true.
 * @option Boolean displayClose Whether to create a "Close" button within the date picker popup. Default is false.
 * @option Boolean selectMultiple Whether a user should be able to select multiple dates with this date picker. Default is false.
 * @option Number numSelectable The maximum number of dates that can be selected where selectMultiple is true. Default is a very high number.
 * @option Boolean clickInput If the matched element is an input type="text" and this option is true then clicking on the input will cause the date picker to appear.
 * @option Boolean rememberViewedMonth Whether the datePicker should remember the last viewed month and open on it. If false then the date picker will always open with the month for the first selected date visible.
 * @option Boolean selectWeek Whether to select a complete week at a time...
 * @option Number verticalPosition The vertical alignment of the popped up date picker to the matched element. One of $.dpConst.POS_TOP and $.dpConst.POS_BOTTOM. Default is $.dpConst.POS_TOP.
 * @option Number horizontalPosition The horizontal alignment of the popped up date picker to the matched element. One of $.dpConst.POS_LEFT and $.dpConst.POS_RIGHT.
 * @option Number verticalOffset The number of pixels offset from the defined verticalPosition of this date picker that it should pop up in. Default in 0.
 * @option Number horizontalOffset The number of pixels offset from the defined horizontalPosition of this date picker that it should pop up in. Default in 0.
 * @option (Function|Array) renderCallback A reference to a function (or an array of separate functions) that is called as each cell is rendered and which can add classes and event listeners to the created nodes. Each callback function will receive four arguments; a jquery object wrapping the created TD, a Date object containing the date this TD represents, a number giving the currently rendered month and a number giving the currently rendered year. Default is no callback.
 * @option String hoverClass The class to attach to each cell when you hover over it (to allow you to use hover effects in IE6 which doesn't support the :hover pseudo-class on elements other than links). Default is dp-hover. Pass false if you don't want a hover class.
 * @option String autoFocusNextInput Whether focus should be passed onto the next input in the form (true) or remain on this input (false) when a date is selected and the calendar closes
 * @type jQuery
 * @name datePicker
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('input.date-picker').datePicker();
 * @desc Creates a date picker button next to all matched input elements. When the button is clicked on the value of the selected date will be placed in the corresponding input (formatted according to Date.format).
 *
 * @example demo/index.html
 * @desc See the projects homepage for many more complex examples...
 **/
    datePicker : function(s)
    {      
      if (!$.event._dpCache) $.event._dpCache = [];
      
      // initialise the date picker controller with the relevant settings...
      s = $.extend({}, $.fn.datePicker.defaults, s);
      
      return this.each(
        function()
        {
          var $this = $(this);
          var alreadyExists = true;
          
          if (!this._dpId) {
            this._dpId = $.guid++;
            $.event._dpCache[this._dpId] = new DatePicker(this);
            alreadyExists = false;
          }
          
          if (s.inline) {
            s.createButton = false;
            s.displayClose = false;
            s.closeOnSelect = false;
            $this.empty();
          }
          
          var controller = $.event._dpCache[this._dpId];
          
          controller.init(s);
          
          if (!alreadyExists && s.createButton) {
            // create it!
            controller.button = $('<a href="#" class="dp-choose-date" title="' + $.dpText.TEXT_CHOOSE_DATE + '">' + $.dpText.TEXT_CHOOSE_DATE + '</a>')
                .bind(
                  'click',
                  function()
                  {
                    $this.dpDisplay(this);
                    this.blur();
                    return false;
                  }
                );
            $this.after(controller.button);
          }
          
          if (!alreadyExists && $this.is(':text')) {
            $this
              .bind(
                'dateSelected',
                function(e, selectedDate, $td)
                {
                  this.value = selectedDate.asString();
                }
              ).bind(
                'change',
                function()
                {
                  if (this.value == '') {
                    controller.clearSelected();
                  } else {
                    var d = Date.fromString(this.value);
                    if (d) {
                      controller.setSelected(d, true, true);
                    }
                  }
                }
              );
            if (s.clickInput) {
              $this.bind(
                'click',
                function()
                {
                  // The change event doesn't happen until the input loses focus so we need to manually trigger it...
                  $this.trigger('change');
                  $this.dpDisplay();
                }
              );
            }
            var d = Date.fromString(this.value);
            if (this.value != '' && d) {
              controller.setSelected(d, true, true);
            }
          }
          
          $this.addClass('dp-applied');
          
        }
      )
    },
/**
 * Disables or enables this date picker
 *
 * @param Boolean s Whether to disable (true) or enable (false) this datePicker
 * @type jQuery
 * @name dpSetDisabled
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-picker').datePicker();
 * $('.date-picker').dpSetDisabled(true);
 * @desc Prevents this date picker from displaying and adds a class of dp-disabled to it (and it's associated button if it has one) for styling purposes. If the matched element is an input field then it will also set the disabled attribute to stop people directly editing the field.
 **/
    dpSetDisabled : function(s)
    {
      return _w.call(this, 'setDisabled', s);
    },
/**
 * Updates the first selectable date for any date pickers on any matched elements.
 *
 * @param String|Date d A Date object or string representing the first selectable date (formatted according to Date.format).
 * @type jQuery
 * @name dpSetStartDate
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-picker').datePicker();
 * $('.date-picker').dpSetStartDate('01/01/2000');
 * @desc Creates a date picker associated with all elements with a class of "date-picker" then sets the first selectable date for each of these to the first day of the millenium.
 **/
    dpSetStartDate : function(d)
    {
      return _w.call(this, 'setStartDate', d);
    },
/**
 * Updates the last selectable date for any date pickers on any matched elements.
 *
 * @param String|Date d A Date object or string representing the last selectable date (formatted according to Date.format).
 * @type jQuery
 * @name dpSetEndDate
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-picker').datePicker();
 * $('.date-picker').dpSetEndDate('01/01/2010');
 * @desc Creates a date picker associated with all elements with a class of "date-picker" then sets the last selectable date for each of these to the first Janurary 2010.
 **/
    dpSetEndDate : function(d)
    {
      return _w.call(this, 'setEndDate', d);
    },
/**
 * Gets a list of Dates currently selected by this datePicker. This will be an empty array if no dates are currently selected or NULL if there is no datePicker associated with the matched element.
 *
 * @type Array
 * @name dpGetSelected
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-picker').datePicker();
 * alert($('.date-picker').dpGetSelected());
 * @desc Will alert an empty array (as nothing is selected yet)
 **/
    dpGetSelected : function()
    {
      var c = _getController(this[0]);
      if (c) {
        return c.getSelected();
      }
      return null;
    },
/**
 * Selects or deselects a date on any matched element's date pickers. Deselcting is only useful on date pickers where selectMultiple==true. Selecting will only work if the passed date is within the startDate and endDate boundries for a given date picker.
 *
 * @param String|Date d A Date object or string representing the date you want to select (formatted according to Date.format).
 * @param Boolean v Whether you want to select (true) or deselect (false) this date. Optional - default = true.
 * @param Boolean m Whether you want the date picker to open up on the month of this date when it is next opened. Optional - default = true.
 * @param Boolean e Whether you want the date picker to dispatch events related to this change of selection. Optional - default = true.
 * @type jQuery
 * @name dpSetSelected
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-picker').datePicker();
 * $('.date-picker').dpSetSelected('01/01/2010');
 * @desc Creates a date picker associated with all elements with a class of "date-picker" then sets the selected date on these date pickers to the first Janurary 2010. When the date picker is next opened it will display Janurary 2010.
 **/
    dpSetSelected : function(d, v, m, e)
    {
      if (v == undefined) v=true;
      if (m == undefined) m=true;
      if (e == undefined) e=true;
      return _w.call(this, 'setSelected', Date.fromString(d), v, m, e);
    },
/**
 * Sets the month that will be displayed when the date picker is next opened. If the passed month is before startDate then the month containing startDate will be displayed instead. If the passed month is after endDate then the month containing the endDate will be displayed instead.
 *
 * @param Number m The month you want the date picker to display. Optional - defaults to the currently displayed month.
 * @param Number y The year you want the date picker to display. Optional - defaults to the currently displayed year.
 * @type jQuery
 * @name dpSetDisplayedMonth
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-picker').datePicker();
 * $('.date-picker').dpSetDisplayedMonth(10, 2008);
 * @desc Creates a date picker associated with all elements with a class of "date-picker" then sets the selected date on these date pickers to the first Janurary 2010. When the date picker is next opened it will display Janurary 2010.
 **/
    dpSetDisplayedMonth : function(m, y)
    {
      return _w.call(this, 'setDisplayedMonth', Number(m), Number(y), true);
    },
/**
 * Displays the date picker associated with the matched elements. Since only one date picker can be displayed at once then the date picker associated with the last matched element will be the one that is displayed.
 *
 * @param HTMLElement e An element that you want the date picker to pop up relative in position to. Optional - default behaviour is to pop up next to the element associated with this date picker.
 * @type jQuery
 * @name dpDisplay
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('#date-picker').datePicker();
 * $('#date-picker').dpDisplay();
 * @desc Creates a date picker associated with the element with an id of date-picker and then causes it to pop up.
 **/
    dpDisplay : function(e)
    {
      return _w.call(this, 'display', e);
    },
/**
 * Sets a function or array of functions that is called when each TD of the date picker popup is rendered to the page
 *
 * @param (Function|Array) a A function or an array of functions that are called when each td is rendered. Each function will receive four arguments; a jquery object wrapping the created TD, a Date object containing the date this TD represents, a number giving the currently rendered month and a number giving the currently rendered year.
 * @type jQuery
 * @name dpSetRenderCallback
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('#date-picker').datePicker();
 * $('#date-picker').dpSetRenderCallback(function($td, thisDate, month, year)
 * {
 *   // do stuff as each td is rendered dependant on the date in the td and the displayed month and year
 * });
 * @desc Creates a date picker associated with the element with an id of date-picker and then creates a function which is called as each td is rendered when this date picker is displayed.
 **/
    dpSetRenderCallback : function(a)
    {
      return _w.call(this, 'setRenderCallback', a);
    },
/**
 * Sets the position that the datePicker will pop up (relative to it's associated element)
 *
 * @param Number v The vertical alignment of the created date picker to it's associated element. Possible values are $.dpConst.POS_TOP and $.dpConst.POS_BOTTOM
 * @param Number h The horizontal alignment of the created date picker to it's associated element. Possible values are $.dpConst.POS_LEFT and $.dpConst.POS_RIGHT
 * @type jQuery
 * @name dpSetPosition
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('#date-picker').datePicker();
 * $('#date-picker').dpSetPosition($.dpConst.POS_BOTTOM, $.dpConst.POS_RIGHT);
 * @desc Creates a date picker associated with the element with an id of date-picker and makes it so that when this date picker pops up it will be bottom and right aligned to the #date-picker element.
 **/
    dpSetPosition : function(v, h)
    {
      return _w.call(this, 'setPosition', v, h);
    },
/**
 * Sets the offset that the popped up date picker will have from it's default position relative to it's associated element (as set by dpSetPosition)
 *
 * @param Number v The vertical offset of the created date picker.
 * @param Number h The horizontal offset of the created date picker.
 * @type jQuery
 * @name dpSetOffset
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('#date-picker').datePicker();
 * $('#date-picker').dpSetOffset(-20, 200);
 * @desc Creates a date picker associated with the element with an id of date-picker and makes it so that when this date picker pops up it will be 20 pixels above and 200 pixels to the right of it's default position.
 **/
    dpSetOffset : function(v, h)
    {
      return _w.call(this, 'setOffset', v, h);
    },
/**
 * Closes the open date picker associated with this element.
 *
 * @type jQuery
 * @name dpClose
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 * @example $('.date-pick')
 *    .datePicker()
 *    .bind(
 *      'focus',
 *      function()
 *      {
 *        $(this).dpDisplay();
 *      }
 *    ).bind(
 *      'blur',
 *      function()
 *      {
 *        $(this).dpClose();
 *      }
 *    );
 **/
    dpClose : function()
    {
      return _w.call(this, '_closeCalendar', false, this[0]);
    },
/**
 * Rerenders the date picker's current month (for use with inline calendars and renderCallbacks).
 *
 * @type jQuery
 * @name dpRerenderCalendar
 * @cat plugins/datePicker
 * @author Kelvin Luck (http://www.kelvinluck.com/)
 *
 **/
    dpRerenderCalendar : function()
    {
      return _w.call(this, '_rerenderCalendar');
    },
    // private function called on unload to clean up any expandos etc and prevent memory links...
    _dpDestroy : function()
    {
      // TODO - implement this?
    }
  });
  
  // private internal function to cut down on the amount of code needed where we forward
  // dp* methods on the jQuery object on to the relevant DatePicker controllers...
  var _w = function(f, a1, a2, a3, a4)
  {
    return this.each(
      function()
      {
        var c = _getController(this);
        if (c) {
          c[f](a1, a2, a3, a4);
        }
      }
    );
  };
  
  function DatePicker(ele)
  {
    this.ele = ele;
    
    // initial values...
    this.displayedMonth    =  null;
    this.displayedYear    =  null;
    this.startDate      =  null;
    this.endDate      =  null;
    this.showYearNavigation  =  null;
    this.closeOnSelect    =  null;
    this.displayClose    =  null;
    this.rememberViewedMonth=  null;
    this.selectMultiple    =  null;
    this.numSelectable    =  null;
    this.numSelected    =  null;
    this.verticalPosition  =  null;
    this.horizontalPosition  =  null;
    this.verticalOffset    =  null;
    this.horizontalOffset  =  null;
    this.button        =  null;
    this.renderCallback    =  [];
    this.selectedDates    =  {};
    this.inline        =  null;
    this.context      =  '#dp-popup';
    this.settings      =  {};
  };
  $.extend(
    DatePicker.prototype,
    {  
      init : function(s)
      {
        this.setStartDate(s.startDate);
        this.setEndDate(s.endDate);
        this.setDisplayedMonth(Number(s.month), Number(s.year));
        this.setRenderCallback(s.renderCallback);
        this.showYearNavigation = s.showYearNavigation;
        this.closeOnSelect = s.closeOnSelect;
        this.displayClose = s.displayClose;
        this.rememberViewedMonth =  s.rememberViewedMonth;
        this.selectMultiple = s.selectMultiple;
        this.numSelectable = s.selectMultiple ? s.numSelectable : 1;
        this.numSelected = 0;
        this.verticalPosition = s.verticalPosition;
        this.horizontalPosition = s.horizontalPosition;
        this.hoverClass = s.hoverClass;
        this.setOffset(s.verticalOffset, s.horizontalOffset);
        this.inline = s.inline;
        this.settings = s;
        if (this.inline) {
          this.context = this.ele;
          this.display();
        }
      },
      setStartDate : function(d)
      {
        if (d) {
          if (d instanceof Date) {
            this.startDate = d;
          } else {
            this.startDate = Date.fromString(d);
          }
        }
        if (!this.startDate) {
          this.startDate = (new Date()).zeroTime();
        }
        this.setDisplayedMonth(this.displayedMonth, this.displayedYear);
      },
      setEndDate : function(d)
      {
        if (d) {
          if (d instanceof Date) {
            this.endDate = d;
          } else {
            this.endDate = Date.fromString(d);
          }
        }
        if (!this.endDate) {
          this.endDate = (new Date('12/31/2999')); // using the JS Date.parse function which expects mm/dd/yyyy
        }
        if (this.endDate.getTime() < this.startDate.getTime()) {
          this.endDate = this.startDate;
        }
        this.setDisplayedMonth(this.displayedMonth, this.displayedYear);
      },
      setPosition : function(v, h)
      {
        this.verticalPosition = v;
        this.horizontalPosition = h;
      },
      setOffset : function(v, h)
      {
        this.verticalOffset = parseInt(v) || 0;
        this.horizontalOffset = parseInt(h) || 0;
      },
      setDisabled : function(s)
      {
        $e = $(this.ele);
        $e[s ? 'addClass' : 'removeClass']('dp-disabled');
        if (this.button) {
          $but = $(this.button);
          $but[s ? 'addClass' : 'removeClass']('dp-disabled');
          $but.attr('title', s ? '' : $.dpText.TEXT_CHOOSE_DATE);
        }
        if ($e.is(':text')) {
          $e.attr('disabled', s ? 'disabled' : '');
        }
      },
      setDisplayedMonth : function(m, y, rerender)
      {
        if (this.startDate == undefined || this.endDate == undefined) {
          return;
        }
        var s = new Date(this.startDate.getTime());
        s.setDate(1);
        var e = new Date(this.endDate.getTime());
        e.setDate(1);
        
        var t;
        if ((!m && !y) || (isNaN(m) && isNaN(y))) {
          // no month or year passed - default to current month
          t = new Date().zeroTime();
          t.setDate(1);
        } else if (isNaN(m)) {
          // just year passed in - presume we want the displayedMonth
          t = new Date(y, this.displayedMonth, 1);
        } else if (isNaN(y)) {
          // just month passed in - presume we want the displayedYear
          t = new Date(this.displayedYear, m, 1);
        } else {
          // year and month passed in - that's the date we want!
          t = new Date(y, m, 1)
        }
        // check if the desired date is within the range of our defined startDate and endDate
        if (t.getTime() < s.getTime()) {
          t = s;
        } else if (t.getTime() > e.getTime()) {
          t = e;
        }
        var oldMonth = this.displayedMonth;
        var oldYear = this.displayedYear;
        this.displayedMonth = t.getMonth();
        this.displayedYear = t.getFullYear();

        if (rerender && (this.displayedMonth != oldMonth || this.displayedYear != oldYear))
        {
          this._rerenderCalendar();
          $(this.ele).trigger('dpMonthChanged', [this.displayedMonth, this.displayedYear]);
        }
      },
      setSelected : function(d, v, moveToMonth, dispatchEvents)
      {
        if (d < this.startDate || d.zeroTime() > this.endDate.zeroTime()) {
          // Don't allow people to select dates outside range...
          return;
        }
        var s = this.settings;
        if (s.selectWeek)
        {
          d = d.addDays(- (d.getDay() - Date.firstDayOfWeek + 7) % 7);
          if (d < this.startDate) // The first day of this week is before the start date so is unselectable...
          {
            return;
          }
        }
        if (v == this.isSelected(d)) // this date is already un/selected
        {
          return;
        }
        if (this.selectMultiple == false) {
          this.clearSelected();
        } else if (v && this.numSelected == this.numSelectable) {
          // can't select any more dates...
          return;
        }
        if (moveToMonth && (this.displayedMonth != d.getMonth() || this.displayedYear != d.getFullYear())) {
          this.setDisplayedMonth(d.getMonth(), d.getFullYear(), true);
        }
        this.selectedDates[d.asString()] = v;
        this.numSelected += v ? 1 : -1;
        var selectorString = 'td.' + (d.getMonth() == this.displayedMonth ? 'current-month' : 'other-month');
        var $td;
        $(selectorString, this.context).each(
          function()
          {
            if ($(this).data('datePickerDate') == d.asString()) {
              $td = $(this);
              if (s.selectWeek)
              {
                $td.parent()[v ? 'addClass' : 'removeClass']('selectedWeek');
              }
              $td[v ? 'addClass' : 'removeClass']('selected'); 
            }
          }
        );
        $('td', this.context).not('.selected')[this.selectMultiple &&  this.numSelected == this.numSelectable ? 'addClass' : 'removeClass']('unselectable');
        
        if (dispatchEvents)
        {
          var s = this.isSelected(d);
          $e = $(this.ele);
          var dClone = Date.fromString(d.asString());
          $e.trigger('dateSelected', [dClone, $td, s]);
          $e.trigger('change');
        }
      },
      isSelected : function(d)
      {
        return this.selectedDates[d.asString()];
      },
      getSelected : function()
      {
        var r = [];
        for(var s in this.selectedDates) {
          if (this.selectedDates[s] == true) {
            r.push(Date.fromString(s));
          }
        }
        return r;
      },
      clearSelected : function()
      {
        this.selectedDates = {};
        this.numSelected = 0;
        $('td.selected', this.context).removeClass('selected').parent().removeClass('selectedWeek');
      },
      display : function(eleAlignTo)
      {
        if ($(this.ele).is('.dp-disabled')) return;
        
        eleAlignTo = eleAlignTo || this.ele;
        var c = this;
        var $ele = $(eleAlignTo);
        var eleOffset = $ele.offset();
        
        var $createIn;
        var attrs;
        var attrsCalendarHolder;
        var cssRules;
        
        if (c.inline) {
          $createIn = $(this.ele);
          attrs = {
            'id'    :  'calendar-' + this.ele._dpId,
            'class'  :  'dp-popup dp-popup-inline'
          };

          $('.dp-popup', $createIn).remove();
          cssRules = {
          };
        } else {
          $createIn = $('body');
          attrs = {
            'id'    :  'dp-popup',
            'class'  :  'dp-popup'
          };
          cssRules = {
            'top'  :  eleOffset.top + c.verticalOffset,
            'left'  :  eleOffset.left + c.horizontalOffset
          };
          
          var _checkMouse = function(e)
          {
            var el = e.target;
            var cal = $('#dp-popup')[0];
            
            while (true){
              if (el == cal) {
                return true;
              } else if (el == document) {
                c._closeCalendar();
                return false;
              } else {
                el = $(el).parent()[0];
              }
            }
          };
          this._checkMouse = _checkMouse;
          
          c._closeCalendar(true);
          $(document).bind(
            'keydown.datepicker', 
            function(event)
            {
              if (event.keyCode == 27) {
                c._closeCalendar();
              }
            }
          );
        }
        
        if (!c.rememberViewedMonth)
        {
          var selectedDate = this.getSelected()[0];
          if (selectedDate) {
            selectedDate = new Date(selectedDate);
            this.setDisplayedMonth(selectedDate.getMonth(), selectedDate.getFullYear(), false);
          }
        }
        
        $createIn
          .append(
            $('<div></div>')
              .attr(attrs)
              .css(cssRules)
              .append(
//                $('<a href="#" class="selecteee">aaa</a>'),
                $('<h2></h2>'),
                $('<div class="dp-nav-prev"></div>')
                  .append(
                    $('<a class="dp-nav-prev-year" href="#" title="' + $.dpText.TEXT_PREV_YEAR + '">&lt;&lt;</a>')
                      .bind(
                        'click',
                        function()
                        {
                          return c._displayNewMonth.call(c, this, 0, -1);
                        }
                      ),
                    $('<a class="dp-nav-prev-month" href="#" title="' + $.dpText.TEXT_PREV_MONTH + '">&lt;</a>')
                      .bind(
                        'click',
                        function()
                        {
                          return c._displayNewMonth.call(c, this, -1, 0);
                        }
                      )
                  ),
                $('<div class="dp-nav-next"></div>')
                  .append(
                    $('<a class="dp-nav-next-year" href="#" title="' + $.dpText.TEXT_NEXT_YEAR + '">&gt;&gt;</a>')
                      .bind(
                        'click',
                        function()
                        {
                          return c._displayNewMonth.call(c, this, 0, 1);
                        }
                      ),
                    $('<a class="dp-nav-next-month" href="#" title="' + $.dpText.TEXT_NEXT_MONTH + '">&gt;</a>')
                      .bind(
                        'click',
                        function()
                        {
                          return c._displayNewMonth.call(c, this, 1, 0);
                        }
                      )
                  ),
                $('<div class="dp-calendar"></div>')
              )
              .bgIframe()
            );
          
        var $pop = this.inline ? $('.dp-popup', this.context) : $('#dp-popup');
        
        if (this.showYearNavigation == false) {
          $('.dp-nav-prev-year, .dp-nav-next-year', c.context).css('display', 'none');
        }
        if (this.displayClose) {
          $pop.append(
            $('<a href="#" id="dp-close">' + $.dpText.TEXT_CLOSE + '</a>')
              .bind(
                'click',
                function()
                {
                  c._closeCalendar();
                  return false;
                }
              )
          );
        }
        c._renderCalendar();

        $(this.ele).trigger('dpDisplayed', $pop);
        
        if (!c.inline) {
          if (this.verticalPosition == $.dpConst.POS_BOTTOM) {
            $pop.css('top', eleOffset.top + $ele.height() - $pop.height() + c.verticalOffset);
          }
          if (this.horizontalPosition == $.dpConst.POS_RIGHT) {
            $pop.css('left', eleOffset.left + $ele.width() - $pop.width() + c.horizontalOffset);
          }
//          $('.selectee', this.context).focus();
          $(document).bind('mousedown.datepicker', this._checkMouse);
        }
        
      },
      setRenderCallback : function(a)
      {
        if (a == null) return;
        if (a && typeof(a) == 'function') {
          a = [a];
        }
        this.renderCallback = this.renderCallback.concat(a);
      },
      cellRender : function ($td, thisDate, month, year) {
        var c = this.dpController;
        var d = new Date(thisDate.getTime());
        
        // add our click handlers to deal with it when the days are clicked...
        
        $td.bind(
          'click',
          function()
          {
            var $this = $(this);
            if (!$this.is('.disabled')) {
              c.setSelected(d, !$this.is('.selected') || !c.selectMultiple, false, true);
              if (c.closeOnSelect) {
                // Focus the next input in the formâ??
                if (c.settings.autoFocusNextInput) {
                  var ele = c.ele;
                  var found = false;
                  $(':input', ele.form).each(
                    function()
                    {
                      if (found) {
                        $(this).focus();
                        return false;
                      }
                      if (this == ele) {
                        found = true;
                      }
                    }
                  );
                } else {
                  c.ele.focus();
                }
                c._closeCalendar();
              }
            }
          }
        );
        if (c.isSelected(d)) {
          $td.addClass('selected');
          if (c.settings.selectWeek)
          {
            $td.parent().addClass('selectedWeek');
          }
        } else  if (c.selectMultiple && c.numSelected == c.numSelectable) {
          $td.addClass('unselectable');
        }
        
      },
      _applyRenderCallbacks : function()
      {
        var c = this;
        $('td', this.context).each(
          function()
          {
            for (var i=0; i<c.renderCallback.length; i++) {
              $td = $(this);
              c.renderCallback[i].apply(this, [$td, Date.fromString($td.data('datePickerDate')), c.displayedMonth, c.displayedYear]);
            }
          }
        );
        return;
      },
      // ele is the clicked button - only proceed if it doesn't have the class disabled...
      // m and y are -1, 0 or 1 depending which direction we want to go in...
      _displayNewMonth : function(ele, m, y) 
      {
        if (!$(ele).is('.disabled')) {
          this.setDisplayedMonth(this.displayedMonth + m, this.displayedYear + y, true);
        }
        ele.blur();
        return false;
      },
      _rerenderCalendar : function()
      {
        this._clearCalendar();
        this._renderCalendar();
      },
      _renderCalendar : function()
      {
        // set the title...
        $('h2', this.context).html((new Date(this.displayedYear, this.displayedMonth, 1)).asString($.dpText.HEADER_FORMAT));
        
        // render the calendar...
        $('.dp-calendar', this.context).renderCalendar(
          $.extend(
            {},
            this.settings, 
            {
              month      : this.displayedMonth,
              year      : this.displayedYear,
              renderCallback  : this.cellRender,
              dpController  : this,
              hoverClass    : this.hoverClass
            })
        );
        
        // update the status of the control buttons and disable dates before startDate or after endDate...
        // TODO: When should the year buttons be disabled? When you can't go forward a whole year from where you are or is that annoying?
        if (this.displayedYear == this.startDate.getFullYear() && this.displayedMonth == this.startDate.getMonth()) {
          $('.dp-nav-prev-year', this.context).addClass('disabled');
          $('.dp-nav-prev-month', this.context).addClass('disabled');
          $('.dp-calendar td.other-month', this.context).each(
            function()
            {
              var $this = $(this);
              if (Number($this.text()) > 20) {
                $this.addClass('disabled');
              }
            }
          );
          var d = this.startDate.getDate();
          $('.dp-calendar td.current-month', this.context).each(
            function()
            {
              var $this = $(this);
              if (Number($this.text()) < d) {
                $this.addClass('disabled');
              }
            }
          );
        } else {
          $('.dp-nav-prev-year', this.context).removeClass('disabled');
          $('.dp-nav-prev-month', this.context).removeClass('disabled');
          var d = this.startDate.getDate();
          if (d > 20) {
            // check if the startDate is last month as we might need to add some disabled classes...
            var st = this.startDate.getTime();
            var sd = new Date(st);
            sd.addMonths(1);
            if (this.displayedYear == sd.getFullYear() && this.displayedMonth == sd.getMonth()) {
              $('.dp-calendar td.other-month', this.context).each(
                function()
                {
                  var $this = $(this);
                  if (Date.fromString($this.data('datePickerDate')).getTime() < st) {
                    $this.addClass('disabled');
                  }
                }
              );
            }
          }
        }
        if (this.displayedYear == this.endDate.getFullYear() && this.displayedMonth == this.endDate.getMonth()) {
          $('.dp-nav-next-year', this.context).addClass('disabled');
          $('.dp-nav-next-month', this.context).addClass('disabled');
          $('.dp-calendar td.other-month', this.context).each(
            function()
            {
              var $this = $(this);
              if (Number($this.text()) < 14) {
                $this.addClass('disabled');
              }
            }
          );
          var d = this.endDate.getDate();
          $('.dp-calendar td.current-month', this.context).each(
            function()
            {
              var $this = $(this);
              if (Number($this.text()) > d) {
                $this.addClass('disabled');
              }
            }
          );
        } else {
          $('.dp-nav-next-year', this.context).removeClass('disabled');
          $('.dp-nav-next-month', this.context).removeClass('disabled');
          var d = this.endDate.getDate();
          if (d < 13) {
            // check if the endDate is next month as we might need to add some disabled classes...
            var ed = new Date(this.endDate.getTime());
            ed.addMonths(-1);
            if (this.displayedYear == ed.getFullYear() && this.displayedMonth == ed.getMonth()) {
              $('.dp-calendar td.other-month', this.context).each(
                function()
                {
                  var $this = $(this);
                  var cellDay = Number($this.text());
                  if (cellDay < 13 && cellDay > d) {
                    $this.addClass('disabled');
                  }
                }
              );
            }
          }
        }
        this._applyRenderCallbacks();
      },
      _closeCalendar : function(programatic, ele)
      {
        if (!ele || ele == this.ele)
        {
          $(document).unbind('mousedown.datepicker');
          $(document).unbind('keydown.datepicker');
          this._clearCalendar();
          $('#dp-popup a').unbind();
          $('#dp-popup').empty().remove();
          if (!programatic) {
            $(this.ele).trigger('dpClosed', [this.getSelected()]);
          }
        }
      },
      // empties the current dp-calendar div and makes sure that all events are unbound
      // and expandos removed to avoid memory leaks...
      _clearCalendar : function()
      {
        // TODO.
        $('.dp-calendar td', this.context).unbind();
        $('.dp-calendar', this.context).empty();
      }
    }
  );
  
  // static constants
  $.dpConst = {
    SHOW_HEADER_NONE  :  0,
    SHOW_HEADER_SHORT  :  1,
    SHOW_HEADER_LONG  :  2,
    POS_TOP        :  0,
    POS_BOTTOM      :  1,
    POS_LEFT      :  0,
    POS_RIGHT      :  1,
    DP_INTERNAL_FOCUS  :  'dpInternalFocusTrigger'
  };
  // localisable text
  $.dpText = {
    TEXT_PREV_YEAR    :  'Previous year',
    TEXT_PREV_MONTH    :  'Previous month',
    TEXT_NEXT_YEAR    :  'Next year',
    TEXT_NEXT_MONTH    :  'Next month',
    TEXT_CLOSE      :  'Close',
    TEXT_CHOOSE_DATE  :  'Choose date',
    HEADER_FORMAT    :  'mmmm yyyy'
  };
  // version
  $.dpVersion = '$Id: jquery.datePicker.js 108 2011-11-17 21:19:57Z kelvin.luck@gmail.com $';

  $.fn.datePicker.defaults = {
    month        : undefined,
    year        : undefined,
    showHeader      : $.dpConst.SHOW_HEADER_SHORT,
    startDate      : undefined,
    endDate        : undefined,
    inline        : false,
    renderCallback    : null,
    createButton    : true,
    showYearNavigation  : true,
    closeOnSelect    : true,
    displayClose    : false,
    selectMultiple    : false,
    numSelectable    : Number.MAX_VALUE,
    clickInput      : false,
    rememberViewedMonth  : true,
    selectWeek      : false,
    verticalPosition  : $.dpConst.POS_TOP,
    horizontalPosition  : $.dpConst.POS_LEFT,
    verticalOffset    : 0,
    horizontalOffset  : 0,
    hoverClass      : 'dp-hover',
    autoFocusNextInput  : false
  };

  function _getController(ele)
  {
    if (ele._dpId) return $.event._dpCache[ele._dpId];
    return false;
  };
  
  // make it so that no error is thrown if bgIframe plugin isn't included (allows you to use conditional
  // comments to only include bgIframe where it is needed in IE without breaking this plugin).
  if ($.fn.bgIframe == undefined) {
    $.fn.bgIframe = function() {return this; };
  };


  // clean-up
  $(window)
    .bind('unload', function() {
      var els = $.event._dpCache || [];
      for (var i in els) {
        $(els[i].ele)._dpDestroy();
      }
    });
    
  
})(jQuery);
//! moment.js
//! version : 2.5.1
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
//! license : MIT
//! momentjs.com
(function(a){function b(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function c(a,b){return function(c){return k(a.call(this,c),b)}}function d(a,b){return function(c){return this.lang().ordinal(a.call(this,c),b)}}function e(){}function f(a){w(a),h(this,a)}function g(a){var b=q(a),c=b.year||0,d=b.month||0,e=b.week||0,f=b.day||0,g=b.hour||0,h=b.minute||0,i=b.second||0,j=b.millisecond||0;this._milliseconds=+j+1e3*i+6e4*h+36e5*g,this._days=+f+7*e,this._months=+d+12*c,this._data={},this._bubble()}function h(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return b.hasOwnProperty("toString")&&(a.toString=b.toString),b.hasOwnProperty("valueOf")&&(a.valueOf=b.valueOf),a}function i(a){var b,c={};for(b in a)a.hasOwnProperty(b)&&qb.hasOwnProperty(b)&&(c[b]=a[b]);return c}function j(a){return 0>a?Math.ceil(a):Math.floor(a)}function k(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.length<b;)d="0"+d;return(e?c?"+":"":"-")+d}function l(a,b,c,d){var e,f,g=b._milliseconds,h=b._days,i=b._months;g&&a._d.setTime(+a._d+g*c),(h||i)&&(e=a.minute(),f=a.hour()),h&&a.date(a.date()+h*c),i&&a.month(a.month()+i*c),g&&!d&&db.updateOffset(a),(h||i)&&(a.minute(e),a.hour(f))}function m(a){return"[object Array]"===Object.prototype.toString.call(a)}function n(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof Date}function o(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&s(a[d])!==s(b[d]))&&g++;return g+f}function p(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=Tb[a]||Ub[b]||b}return a}function q(a){var b,c,d={};for(c in a)a.hasOwnProperty(c)&&(b=p(c),b&&(d[b]=a[c]));return d}function r(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}db[b]=function(e,f){var g,h,i=db.fn._lang[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=db().utc().set(d,a);return i.call(db.fn._lang,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function s(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function t(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function u(a){return v(a)?366:365}function v(a){return a%4===0&&a%100!==0||a%400===0}function w(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[jb]<0||a._a[jb]>11?jb:a._a[kb]<1||a._a[kb]>t(a._a[ib],a._a[jb])?kb:a._a[lb]<0||a._a[lb]>23?lb:a._a[mb]<0||a._a[mb]>59?mb:a._a[nb]<0||a._a[nb]>59?nb:a._a[ob]<0||a._a[ob]>999?ob:-1,a._pf._overflowDayOfYear&&(ib>b||b>kb)&&(b=kb),a._pf.overflow=b)}function x(a){return null==a._isValid&&(a._isValid=!isNaN(a._d.getTime())&&a._pf.overflow<0&&!a._pf.empty&&!a._pf.invalidMonth&&!a._pf.nullInput&&!a._pf.invalidFormat&&!a._pf.userInvalidated,a._strict&&(a._isValid=a._isValid&&0===a._pf.charsLeftOver&&0===a._pf.unusedTokens.length)),a._isValid}function y(a){return a?a.toLowerCase().replace("_","-"):a}function z(a,b){return b._isUTC?db(a).zone(b._offset||0):db(a).local()}function A(a,b){return b.abbr=a,pb[a]||(pb[a]=new e),pb[a].set(b),pb[a]}function B(a){delete pb[a]}function C(a){var b,c,d,e,f=0,g=function(a){if(!pb[a]&&rb)try{require("./lang/"+a)}catch(b){}return pb[a]};if(!a)return db.fn._lang;if(!m(a)){if(c=g(a))return c;a=[a]}for(;f<a.length;){for(e=y(a[f]).split("-"),b=e.length,d=y(a[f+1]),d=d?d.split("-"):null;b>0;){if(c=g(e.slice(0,b).join("-")))return c;if(d&&d.length>=b&&o(e,d,!0)>=b-1)break;b--}f++}return db.fn._lang}function D(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function E(a){var b,c,d=a.match(vb);for(b=0,c=d.length;c>b;b++)d[b]=Yb[d[b]]?Yb[d[b]]:D(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function F(a,b){return a.isValid()?(b=G(b,a.lang()),Vb[b]||(Vb[b]=E(b)),Vb[b](a)):a.lang().invalidDate()}function G(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(wb.lastIndex=0;d>=0&&wb.test(a);)a=a.replace(wb,c),wb.lastIndex=0,d-=1;return a}function H(a,b){var c,d=b._strict;switch(a){case"DDDD":return Ib;case"YYYY":case"GGGG":case"gggg":return d?Jb:zb;case"Y":case"G":case"g":return Lb;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?Kb:Ab;case"S":if(d)return Gb;case"SS":if(d)return Hb;case"SSS":if(d)return Ib;case"DDD":return yb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Cb;case"a":case"A":return C(b._l)._meridiemParse;case"X":return Fb;case"Z":case"ZZ":return Db;case"T":return Eb;case"SSSS":return Bb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?Hb:xb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return xb;default:return c=new RegExp(P(O(a.replace("\\","")),"i"))}}function I(a){a=a||"";var b=a.match(Db)||[],c=b[b.length-1]||[],d=(c+"").match(Qb)||["-",0,0],e=+(60*d[1])+s(d[2]);return"+"===d[0]?-e:e}function J(a,b,c){var d,e=c._a;switch(a){case"M":case"MM":null!=b&&(e[jb]=s(b)-1);break;case"MMM":case"MMMM":d=C(c._l).monthsParse(b),null!=d?e[jb]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[kb]=s(b));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=s(b));break;case"YY":e[ib]=s(b)+(s(b)>68?1900:2e3);break;case"YYYY":case"YYYYY":case"YYYYYY":e[ib]=s(b);break;case"a":case"A":c._isPm=C(c._l).isPM(b);break;case"H":case"HH":case"h":case"hh":e[lb]=s(b);break;case"m":case"mm":e[mb]=s(b);break;case"s":case"ss":e[nb]=s(b);break;case"S":case"SS":case"SSS":case"SSSS":e[ob]=s(1e3*("0."+b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=I(b);break;case"w":case"ww":case"W":case"WW":case"d":case"dd":case"ddd":case"dddd":case"e":case"E":a=a.substr(0,1);case"gg":case"gggg":case"GG":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=b)}}function K(a){var b,c,d,e,f,g,h,i,j,k,l=[];if(!a._d){for(d=M(a),a._w&&null==a._a[kb]&&null==a._a[jb]&&(f=function(b){var c=parseInt(b,10);return b?b.length<3?c>68?1900+c:2e3+c:c:null==a._a[ib]?db().weekYear():a._a[ib]},g=a._w,null!=g.GG||null!=g.W||null!=g.E?h=Z(f(g.GG),g.W||1,g.E,4,1):(i=C(a._l),j=null!=g.d?V(g.d,i):null!=g.e?parseInt(g.e,10)+i._week.dow:0,k=parseInt(g.w,10)||1,null!=g.d&&j<i._week.dow&&k++,h=Z(f(g.gg),k,j,i._week.doy,i._week.dow)),a._a[ib]=h.year,a._dayOfYear=h.dayOfYear),a._dayOfYear&&(e=null==a._a[ib]?d[ib]:a._a[ib],a._dayOfYear>u(e)&&(a._pf._overflowDayOfYear=!0),c=U(e,0,a._dayOfYear),a._a[jb]=c.getUTCMonth(),a._a[kb]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=l[b]=d[b];for(;7>b;b++)a._a[b]=l[b]=null==a._a[b]?2===b?1:0:a._a[b];l[lb]+=s((a._tzm||0)/60),l[mb]+=s((a._tzm||0)%60),a._d=(a._useUTC?U:T).apply(null,l)}}function L(a){var b;a._d||(b=q(a._i),a._a=[b.year,b.month,b.day,b.hour,b.minute,b.second,b.millisecond],K(a))}function M(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function N(a){a._a=[],a._pf.empty=!0;var b,c,d,e,f,g=C(a._l),h=""+a._i,i=h.length,j=0;for(d=G(a._f,g).match(vb)||[],b=0;b<d.length;b++)e=d[b],c=(h.match(H(e,a))||[])[0],c&&(f=h.substr(0,h.indexOf(c)),f.length>0&&a._pf.unusedInput.push(f),h=h.slice(h.indexOf(c)+c.length),j+=c.length),Yb[e]?(c?a._pf.empty=!1:a._pf.unusedTokens.push(e),J(e,c,a)):a._strict&&!c&&a._pf.unusedTokens.push(e);a._pf.charsLeftOver=i-j,h.length>0&&a._pf.unusedInput.push(h),a._isPm&&a._a[lb]<12&&(a._a[lb]+=12),a._isPm===!1&&12===a._a[lb]&&(a._a[lb]=0),K(a),w(a)}function O(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function P(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Q(a){var c,d,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,a._d=new Date(0/0),void 0;for(f=0;f<a._f.length;f++)g=0,c=h({},a),c._pf=b(),c._f=a._f[f],N(c),x(c)&&(g+=c._pf.charsLeftOver,g+=10*c._pf.unusedTokens.length,c._pf.score=g,(null==e||e>g)&&(e=g,d=c));h(a,d||c)}function R(a){var b,c,d=a._i,e=Mb.exec(d);if(e){for(a._pf.iso=!0,b=0,c=Ob.length;c>b;b++)if(Ob[b][1].exec(d)){a._f=Ob[b][0]+(e[6]||" ");break}for(b=0,c=Pb.length;c>b;b++)if(Pb[b][1].exec(d)){a._f+=Pb[b][0];break}d.match(Db)&&(a._f+="Z"),N(a)}else a._d=new Date(d)}function S(b){var c=b._i,d=sb.exec(c);c===a?b._d=new Date:d?b._d=new Date(+d[1]):"string"==typeof c?R(b):m(c)?(b._a=c.slice(0),K(b)):n(c)?b._d=new Date(+c):"object"==typeof c?L(b):b._d=new Date(c)}function T(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function U(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function V(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function W(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function X(a,b,c){var d=hb(Math.abs(a)/1e3),e=hb(d/60),f=hb(e/60),g=hb(f/24),h=hb(g/365),i=45>d&&["s",d]||1===e&&["m"]||45>e&&["mm",e]||1===f&&["h"]||22>f&&["hh",f]||1===g&&["d"]||25>=g&&["dd",g]||45>=g&&["M"]||345>g&&["MM",hb(g/30)]||1===h&&["y"]||["yy",h];return i[2]=b,i[3]=a>0,i[4]=c,W.apply({},i)}function Y(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=db(a).add("d",f),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function Z(a,b,c,d,e){var f,g,h=U(a,0,1).getUTCDay();return c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:u(a-1)+g}}function $(a){var b=a._i,c=a._f;return null===b?db.invalid({nullInput:!0}):("string"==typeof b&&(a._i=b=C().preparse(b)),db.isMoment(b)?(a=i(b),a._d=new Date(+b._d)):c?m(c)?Q(a):N(a):S(a),new f(a))}function _(a,b){db.fn[a]=db.fn[a+"s"]=function(a){var c=this._isUTC?"UTC":"";return null!=a?(this._d["set"+c+b](a),db.updateOffset(this),this):this._d["get"+c+b]()}}function ab(a){db.duration.fn[a]=function(){return this._data[a]}}function bb(a,b){db.duration.fn["as"+a]=function(){return+this/b}}function cb(a){var b=!1,c=db;"undefined"==typeof ender&&(a?(gb.moment=function(){return!b&&console&&console.warn&&(b=!0,console.warn("Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.")),c.apply(null,arguments)},h(gb.moment,c)):gb.moment=db)}for(var db,eb,fb="2.5.1",gb=this,hb=Math.round,ib=0,jb=1,kb=2,lb=3,mb=4,nb=5,ob=6,pb={},qb={_isAMomentObject:null,_i:null,_f:null,_l:null,_strict:null,_isUTC:null,_offset:null,_pf:null,_lang:null},rb="undefined"!=typeof module&&module.exports&&"undefined"!=typeof require,sb=/^\/?Date\((\-?\d+)/i,tb=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,ub=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,vb=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,wb=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,xb=/\d\d?/,yb=/\d{1,3}/,zb=/\d{1,4}/,Ab=/[+\-]?\d{1,6}/,Bb=/\d+/,Cb=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Db=/Z|[\+\-]\d\d:?\d\d/gi,Eb=/T/i,Fb=/[\+\-]?\d+(\.\d{1,3})?/,Gb=/\d/,Hb=/\d\d/,Ib=/\d{3}/,Jb=/\d{4}/,Kb=/[+-]?\d{6}/,Lb=/[+-]?\d+/,Mb=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Nb="YYYY-MM-DDTHH:mm:ssZ",Ob=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],Pb=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d{1,3}/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],Qb=/([\+\-]|\d\d)/gi,Rb="Date|Hours|Minutes|Seconds|Milliseconds".split("|"),Sb={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},Tb={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},Ub={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},Vb={},Wb="DDD w W M D d".split(" "),Xb="M D H h m s w W".split(" "),Yb={M:function(){return this.month()+1},MMM:function(a){return this.lang().monthsShort(this,a)},MMMM:function(a){return this.lang().months(this,a)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(a){return this.lang().weekdaysMin(this,a)},ddd:function(a){return this.lang().weekdaysShort(this,a)},dddd:function(a){return this.lang().weekdays(this,a)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return k(this.year()%100,2)},YYYY:function(){return k(this.year(),4)},YYYYY:function(){return k(this.year(),5)},YYYYYY:function(){var a=this.year(),b=a>=0?"+":"-";return b+k(Math.abs(a),6)},gg:function(){return k(this.weekYear()%100,2)},gggg:function(){return k(this.weekYear(),4)},ggggg:function(){return k(this.weekYear(),5)},GG:function(){return k(this.isoWeekYear()%100,2)},GGGG:function(){return k(this.isoWeekYear(),4)},GGGGG:function(){return k(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return s(this.milliseconds()/100)},SS:function(){return k(s(this.milliseconds()/10),2)},SSS:function(){return k(this.milliseconds(),3)},SSSS:function(){return k(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+k(s(a/60),2)+":"+k(s(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+k(s(a/60),2)+k(s(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Zb=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];Wb.length;)eb=Wb.pop(),Yb[eb+"o"]=d(Yb[eb],eb);for(;Xb.length;)eb=Xb.pop(),Yb[eb+eb]=c(Yb[eb],2);for(Yb.DDDD=c(Yb.DDD,3),h(e.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a){var b,c,d;for(this._monthsParse||(this._monthsParse=[]),b=0;12>b;b++)if(this._monthsParse[b]||(c=db.utc([2e3,b]),d="^"+this.months(c,"")+"|^"+this.monthsShort(c,""),this._monthsParse[b]=new RegExp(d.replace(".",""),"i")),this._monthsParse[b].test(a))return b},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=db([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b){var c=this._calendar[a];return"function"==typeof c?c.apply(b):c},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",preparse:function(a){return a},postformat:function(a){return a},week:function(a){return Y(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),db=function(c,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=c,g._f=d,g._l=e,g._strict=f,g._isUTC=!1,g._pf=b(),$(g)},db.utc=function(c,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=c,g._f=d,g._strict=f,g._pf=b(),$(g).utc()},db.unix=function(a){return db(1e3*a)},db.duration=function(a,b){var c,d,e,f=a,h=null;return db.isDuration(a)?f={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(f={},b?f[b]=a:f.milliseconds=a):(h=tb.exec(a))?(c="-"===h[1]?-1:1,f={y:0,d:s(h[kb])*c,h:s(h[lb])*c,m:s(h[mb])*c,s:s(h[nb])*c,ms:s(h[ob])*c}):(h=ub.exec(a))&&(c="-"===h[1]?-1:1,e=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*c},f={y:e(h[2]),M:e(h[3]),d:e(h[4]),h:e(h[5]),m:e(h[6]),s:e(h[7]),w:e(h[8])}),d=new g(f),db.isDuration(a)&&a.hasOwnProperty("_lang")&&(d._lang=a._lang),d},db.version=fb,db.defaultFormat=Nb,db.updateOffset=function(){},db.lang=function(a,b){var c;return a?(b?A(y(a),b):null===b?(B(a),a="en"):pb[a]||C(a),c=db.duration.fn._lang=db.fn._lang=C(a),c._abbr):db.fn._lang._abbr},db.langData=function(a){return a&&a._lang&&a._lang._abbr&&(a=a._lang._abbr),C(a)},db.isMoment=function(a){return a instanceof f||null!=a&&a.hasOwnProperty("_isAMomentObject")},db.isDuration=function(a){return a instanceof g},eb=Zb.length-1;eb>=0;--eb)r(Zb[eb]);for(db.normalizeUnits=function(a){return p(a)},db.invalid=function(a){var b=db.utc(0/0);return null!=a?h(b._pf,a):b._pf.userInvalidated=!0,b},db.parseZone=function(a){return db(a).parseZone()},h(db.fn=f.prototype,{clone:function(){return db(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().lang("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=db(this).utc();return 0<a.year()&&a.year()<=9999?F(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):F(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var a=this;return[a.year(),a.month(),a.date(),a.hours(),a.minutes(),a.seconds(),a.milliseconds()]},isValid:function(){return x(this)},isDSTShifted:function(){return this._a?this.isValid()&&o(this._a,(this._isUTC?db.utc(this._a):db(this._a)).toArray())>0:!1},parsingFlags:function(){return h({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(){return this.zone(0)},local:function(){return this.zone(0),this._isUTC=!1,this},format:function(a){var b=F(this,a||db.defaultFormat);return this.lang().postformat(b)},add:function(a,b){var c;return c="string"==typeof a?db.duration(+b,a):db.duration(a,b),l(this,c,1),this},subtract:function(a,b){var c;return c="string"==typeof a?db.duration(+b,a):db.duration(a,b),l(this,c,-1),this},diff:function(a,b,c){var d,e,f=z(a,this),g=6e4*(this.zone()-f.zone());return b=p(b),"year"===b||"month"===b?(d=432e5*(this.daysInMonth()+f.daysInMonth()),e=12*(this.year()-f.year())+(this.month()-f.month()),e+=(this-db(this).startOf("month")-(f-db(f).startOf("month")))/d,e-=6e4*(this.zone()-db(this).startOf("month").zone()-(f.zone()-db(f).startOf("month").zone()))/d,"year"===b&&(e/=12)):(d=this-f,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-g)/864e5:"week"===b?(d-g)/6048e5:d),c?e:j(e)},from:function(a,b){return db.duration(this.diff(a)).lang(this.lang()._abbr).humanize(!b)},fromNow:function(a){return this.from(db(),a)},calendar:function(){var a=z(db(),this).startOf("day"),b=this.diff(a,"days",!0),c=-6>b?"sameElse":-1>b?"lastWeek":0>b?"lastDay":1>b?"sameDay":2>b?"nextDay":7>b?"nextWeek":"sameElse";return this.format(this.lang().calendar(c,this))},isLeapYear:function(){return v(this.year())},isDST:function(){return this.zone()<this.clone().month(0).zone()||this.zone()<this.clone().month(5).zone()},day:function(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=V(a,this.lang()),this.add({d:a-b})):b},month:function(a){var b,c=this._isUTC?"UTC":"";return null!=a?"string"==typeof a&&(a=this.lang().monthsParse(a),"number"!=typeof a)?this:(b=this.date(),this.date(1),this._d["set"+c+"Month"](a),this.date(Math.min(b,this.daysInMonth())),db.updateOffset(this),this):this._d["get"+c+"Month"]()},startOf:function(a){switch(a=p(a)){case"year":this.month(0);case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a?this.weekday(0):"isoWeek"===a&&this.isoWeekday(1),this},endOf:function(a){return a=p(a),this.startOf(a).add("isoWeek"===a?"week":a,1).subtract("ms",1)},isAfter:function(a,b){return b="undefined"!=typeof b?b:"millisecond",+this.clone().startOf(b)>+db(a).startOf(b)},isBefore:function(a,b){return b="undefined"!=typeof b?b:"millisecond",+this.clone().startOf(b)<+db(a).startOf(b)},isSame:function(a,b){return b=b||"ms",+this.clone().startOf(b)===+z(a,this).startOf(b)},min:function(a){return a=db.apply(null,arguments),this>a?this:a},max:function(a){return a=db.apply(null,arguments),a>this?this:a},zone:function(a){var b=this._offset||0;return null==a?this._isUTC?b:this._d.getTimezoneOffset():("string"==typeof a&&(a=I(a)),Math.abs(a)<16&&(a=60*a),this._offset=a,this._isUTC=!0,b!==a&&l(this,db.duration(b-a,"m"),1,!0),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(a){return a=a?db(a).zone():0,(this.zone()-a)%60===0},daysInMonth:function(){return t(this.year(),this.month())},dayOfYear:function(a){var b=hb((db(this).startOf("day")-db(this).startOf("year"))/864e5)+1;return null==a?b:this.add("d",a-b)},quarter:function(){return Math.ceil((this.month()+1)/3)},weekYear:function(a){var b=Y(this,this.lang()._week.dow,this.lang()._week.doy).year;return null==a?b:this.add("y",a-b)},isoWeekYear:function(a){var b=Y(this,1,4).year;return null==a?b:this.add("y",a-b)},week:function(a){var b=this.lang().week(this);return null==a?b:this.add("d",7*(a-b))},isoWeek:function(a){var b=Y(this,1,4).week;return null==a?b:this.add("d",7*(a-b))},weekday:function(a){var b=(this.day()+7-this.lang()._week.dow)%7;return null==a?b:this.add("d",a-b)},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},get:function(a){return a=p(a),this[a]()},set:function(a,b){return a=p(a),"function"==typeof this[a]&&this[a](b),this},lang:function(b){return b===a?this._lang:(this._lang=C(b),this)}}),eb=0;eb<Rb.length;eb++)_(Rb[eb].toLowerCase().replace(/s$/,""),Rb[eb]);_("year","FullYear"),db.fn.days=db.fn.day,db.fn.months=db.fn.month,db.fn.weeks=db.fn.week,db.fn.isoWeeks=db.fn.isoWeek,db.fn.toJSON=db.fn.toISOString,h(db.duration.fn=g.prototype,{_bubble:function(){var a,b,c,d,e=this._milliseconds,f=this._days,g=this._months,h=this._data;h.milliseconds=e%1e3,a=j(e/1e3),h.seconds=a%60,b=j(a/60),h.minutes=b%60,c=j(b/60),h.hours=c%24,f+=j(c/24),h.days=f%30,g+=j(f/30),h.months=g%12,d=j(g/12),h.years=d},weeks:function(){return j(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*s(this._months/12)},humanize:function(a){var b=+this,c=X(b,!a,this.lang());return a&&(c=this.lang().pastFuture(b,c)),this.lang().postformat(c)},add:function(a,b){var c=db.duration(a,b);return this._milliseconds+=c._milliseconds,this._days+=c._days,this._months+=c._months,this._bubble(),this},subtract:function(a,b){var c=db.duration(a,b);return this._milliseconds-=c._milliseconds,this._days-=c._days,this._months-=c._months,this._bubble(),this},get:function(a){return a=p(a),this[a.toLowerCase()+"s"]()},as:function(a){return a=p(a),this["as"+a.charAt(0).toUpperCase()+a.slice(1)+"s"]()},lang:db.fn.lang,toIsoString:function(){var a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),f=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"}});for(eb in Sb)Sb.hasOwnProperty(eb)&&(bb(eb,Sb[eb]),ab(eb.toLowerCase()));bb("Weeks",6048e5),db.duration.fn.asMonths=function(){return(+this-31536e6*this.years())/2592e6+12*this.years()},db.lang("en",{ordinal:function(a){var b=a%10,c=1===s(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),function(a){a(db)}(function(a){return a.lang("ar-ma",{months:"??C??_?E?C??_?C??_?E???_?C?_?????_??????_UOE_OE?E?_??E?E?_???E?_I??E?".split("_"),monthsShort:"??C??_?E?C??_?C??_?E???_?C?_?????_??????_UOE_OE?E?_??E?E?_???E?_I??E?".split("_"),weekdays:"C???I_C??E???_C?E?CEC?_C???E?C?_C?I???_C????E_C??EE".split("_"),weekdaysShort:"C?I_CE???_E?CEC?_C?E?C?_I???_???E_?EE".split("_"),weekdaysMin:"?_?_E_?_I_?_?".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[C???? ??? C??C?E] LT",nextDay:"[UIC ??? C??C?E] LT",nextWeek:"dddd [??? C??C?E] LT",lastDay:"[??? ??? C??C?E] LT",lastWeek:"dddd [??? C??C?E] LT",sameElse:"L"},relativeTime:{future:"?? %s",past:"??? %s",s:"E?C?",m:"I???E",mm:"%d I?C??",h:"?C?E",hh:"%d ?C?CE",d:"???",dd:"%d ??C?",M:"O??",MM:"%d ?O??",y:"??E",yy:"%d ???CE"},week:{dow:6,doy:12}})}),function(a){a(db)}(function(a){return a.lang("ar",{months:"??C??/ ?C??? C?EC??_?E?C??/ OEC?_?C??/ A?C?_?E???/ ???C?_?C??/ ??C?_?????/ ????C?_?????/ E???_?U???/ AE_?EE?E?/ ?????_??E?E?/ EO??? C????_????E?/ EO??? C?EC??_I???E?/ ?C??? C????".split("_"),monthsShort:"??C??/ ?C??? C?EC??_?E?C??/ OEC?_?C??/ A?C?_?E???/ ???C?_?C??/ ??C?_?????/ ????C?_?????/ E???_?U???/ AE_?EE?E?/ ?????_??E?E?/ EO??? C????_????E?/ EO??? C?EC??_I???E?/ ?C??? C????".split("_"),weekdays:"C???I_C??E???_C?E?CEC?_C???E?C?_C?I???_C????E_C??EE".split("_"),weekdaysShort:"C???I_C??E???_C?E?CEC?_C???E?C?_C?I???_C????E_C??EE".split("_"),weekdaysMin:"?_?_E_?_I_?_?".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[C???? ??? C??C?E] LT",nextDay:"[UIC ??? C??C?E] LT",nextWeek:"dddd [??? C??C?E] LT",lastDay:"[??? ??? C??C?E] LT",lastWeek:"dddd [??? C??C?E] LT",sameElse:"L"},relativeTime:{future:"?? %s",past:"??? %s",s:"E?C?",m:"I???E",mm:"%d I?C??",h:"?C?E",hh:"%d ?C?CE",d:"???",dd:"%d ??C?",M:"O??",MM:"%d ?O??",y:"??E",yy:"%d ???CE"},week:{dow:6,doy:12}})}),function(a){a(db)}(function(a){return a.lang("bg",{months:"??????_????????_????_?????_???_???_???_??????_?????????_????????_???????_????????".split("_"),monthsShort:"???_???_???_???_???_???_???_???_???_???_???_???".split("_"),weekdays:"??????_??????????_???????_?????_?????????_?????_??????".split("_"),weekdaysShort:"???_???_???_???_???_???_???".split("_"),weekdaysMin:"??_??_??_??_??_??_??".split("_"),longDateFormat:{LT:"H:mm",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[???? ?] LT",nextDay:"[???? ?] LT",nextWeek:"dddd [?] LT",lastDay:"[????? ?] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[? ??????????] dddd [?] LT";case 1:case 2:case 4:case 5:return"[? ?????????] dddd [?] LT"}},sameElse:"L"},relativeTime:{future:"???? %s",past:"????? %s",s:"??????? ???????",m:"??????",mm:"%d ??????",h:"???",hh:"%d ????",d:"???",dd:"%d ???",M:"?????",MM:"%d ??????",y:"??????",yy:"%d ??????"},ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-??":0===c?a+"-??":c>10&&20>c?a+"-??":1===b?a+"-??":2===b?a+"-??":7===b||8===b?a+"-??":a+"-??"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(b){function c(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+f(d[c],a)}function d(a){switch(e(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function e(a){return a>9?e(a%10):a}function f(a,b){return 2===b?g(a):a}function g(b){var c={m:"v",b:"v",d:"z"};return c[b.charAt(0)]===a?b:c[b.charAt(0)]+b.substring(1)}return b.lang("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY LT",LLLL:"dddd, D [a viz] MMMM YYYY LT"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:c,h:"un eur",hh:"%d eur",d:"un devezh",dd:c,M:"ur miz",MM:c,y:"ur bloaz",yy:d},ordinal:function(a){var b=1===a?"a?":"vet";return a+b},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}return a.lang("bs",{months:"januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_?etvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._?et._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_?e_pe_su".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju?er u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro?lu] dddd [u] LT";case 6:return"[pro?le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro?li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:b,mm:b,h:b,hh:b,d:"dan",dd:b,M:"mjesec",MM:b,y:"godinu",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"
},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:"%d?",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a){return a>1&&5>a&&1!==~~(a/10)}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"p?r vte?in":"p?r vte?inami";case"m":return c?"minuta":e?"minutu":"minutou";case"mm":return c||e?f+(b(a)?"minuty":"minut"):f+"minutami";break;case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(b(a)?"hodiny":"hodin"):f+"hodinami";break;case"d":return c||e?"den":"dnem";case"dd":return c||e?f+(b(a)?"dny":"dn?"):f+"dny";break;case"M":return c||e?"m?s?c":"m?s?cem";case"MM":return c||e?f+(b(a)?"m?s?ce":"m?s?c?"):f+"m?s?ci";break;case"y":return c||e?"rok":"rokem";case"yy":return c||e?f+(b(a)?"roky":"let"):f+"lety"}}var d="leden_?nor_b?ezen_duben_kv?ten_?erven_?ervenec_srpen_z???_??jen_listopad_prosinec".split("_"),e="led_?no_b?e_dub_kv?_?vn_?vc_srp_z??_??j_lis_pro".split("_");return a.lang("cs",{months:d,monthsShort:e,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(d,e),weekdays:"ned?le_pond?l?_?ter?_st?eda_?tvrtek_p?tek_sobota".split("_"),weekdaysShort:"ne_po_?t_st_?t_p?_so".split("_"),weekdaysMin:"ne_po_?t_st_?t_p?_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z?tra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned?li v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st?edu v] LT";case 4:return"[ve ?tvrtek v] LT";case 5:return"[v p?tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v?era v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned?li v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou st?edu v] LT";case 4:case 5:return"[minul?] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p?ed %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("cv",{months:"??????_?????_???_???_???_ç?????_???_ç????_????_???_???_??????".split("_"),monthsShort:"???_???_???_???_???_ç??_???_ç??_??_???_???_???".split("_"),weekdays:"???????????_????????_?????????_?????_??ç????????_???????_????????".split("_"),weekdaysShort:"???_???_???_??_??ç_???_???".split("_"),weekdaysMin:"??_??_??_??_?ç_??_??".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"YYYY [ç????] MMMM [??????] D[-????]",LLL:"YYYY [ç????] MMMM [??????] D[-????], LT",LLLL:"dddd, YYYY [ç????] MMMM [??????] D[-????], LT"},calendar:{sameDay:"[????] LT [???????]",nextDay:"[????] LT [???????]",lastDay:"[????] LT [???????]",nextWeek:"[C????] dddd LT [???????]",lastWeek:"[?????] dddd LT [???????]",sameElse:"L"},relativeTime:{future:function(a){var b=/?????$/i.exec(a)?"???":/ç??$/i.exec(a)?"???":"???";return a+b},past:"%s ??????",s:"???-?? ç??????",m:"??? ?????",mm:"%d ?????",h:"??? ?????",hh:"%d ?????",d:"??? ???",dd:"%d ???",M:"??? ????",MM:"%d ????",y:"??? ç??",yy:"%d ç??"},ordinal:"%d-???",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn àl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s?ndag_mandag_tirsdag_onsdag_torsdag_fredag_l?rdag".split("_"),weekdaysShort:"s?n_man_tir_ons_tor_fre_l?r".split("_"),weekdaysMin:"s?_ma_ti_on_to_fr_l?".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D. MMMM, YYYY LT"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I g?r kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f? sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m?ned",MM:"%d m?neder",y:"et ?r",yy:"%d ?r"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c){var d={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?d[c][0]:d[c][1]}return a.lang("de",{months:"Januar_Februar_M?rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Uhr]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Heute um] LT",sameElse:"L",nextDay:"[Morgen um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gestern um] LT",lastWeek:"[letzten] dddd [um] LT"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:b,mm:"%d Minuten",h:b,hh:"%d Stunden",d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("el",{monthsNominativeEl:"??????????_???????????_???????_????????_?????_???????_???????_?????????_???????????_?????????_?????????_??????????".split("_"),monthsGenitiveEl:"??????????_???????????_???????_????????_?????_???????_???????_?????????_???????????_?????????_?????????_??????????".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"???_???_???_???_???_????_????_???_???_???_???_???".split("_"),weekdays:"???????_???????_?????_???????_??????_?????????_???????".split("_"),weekdaysShort:"???_???_???_???_???_???_???".split("_"),weekdaysMin:"??_??_??_??_??_??_??".split("_"),meridiem:function(a,b,c){return a>11?c?"??":"??":c?"??":"??"},longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendarEl:{sameDay:"[?????? {}] LT",nextDay:"[????? {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[???? {}] LT",lastWeek:"[??? ???????????] dddd [{}] LT",sameElse:"L"},calendar:function(a,b){var c=this._calendarEl[a],d=b&&b.hours();return c.replace("{}",d%12===1?"???":"????")},relativeTime:{future:"?? %s",past:"%s ????",s:"????????????",m:"??? ?????",mm:"%d ?????",h:"??? ???",hh:"%d ????",d:"??? ????",dd:"%d ?????",M:"???? ?????",MM:"%d ?????",y:"???? ??????",yy:"%d ??????"},ordinal:function(a){return a+"?"},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY LT",LLLL:"dddd, D MMMM, YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}})}),function(a){a(db)}(function(a){return a.lang("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a?gusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_a?g_sep_okt_nov_dec".split("_"),weekdays:"Diman?o_Lundo_Mardo_Merkredo_?a?do_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_?a?_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_?a_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY LT",LLLL:"dddd, [la] D[-an de] MMMM, YYYY LT"},meridiem:function(a,b,c){return a>11?c?"p.t.m.":"P.T.M.":c?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia? je] LT",nextDay:"[Morga? je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hiera? je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"anta? %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinal:"%da",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_s?bado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._s?b.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_S?".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma?ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d?a",dd:"%d d?as",M:"un mes",MM:"%d meses",y:"un a?o",yy:"%d a?os"},ordinal:"%d?",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c,d){var e={s:["m?ne sekundi","m?ni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe p?eva","üks p?ev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}return a.lang("et",{months:"jaanuar_veebruar_m?rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m?rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühap?ev_esmasp?ev_teisip?ev_kolmap?ev_neljap?ev_reede_laup?ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[T?na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J?rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p?rast",past:"%s tagasi",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:"%d p?eva",M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] LT",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] LT",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] LT",llll:"ddd, YYYY[ko] MMM D[a] LT"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){var b={1:"?",2:"?",3:"?",4:"?",5:"?",6:"?",7:"?",8:"?",9:"?",0:"?"},c={"?":"1","?":"2","?":"3","?":"4","?":"5","?":"6","?":"7","?":"8","?":"9","?":"0"};return a.lang("fa",{months:"?C????_?????_?C??_A????_??_????_?????_C?E_??EC?E?_C?EE?_??C?E?_I?C?E?".split("_"),monthsShort:"?C????_?????_?C??_A????_??_????_?????_C?E_??EC?E?_C?EE?_??C?E?_I?C?E?".split("_"),weekdays:"???O?E?_I?O?E?_???O?E?_??C?O?E?_????O?E?_????_O?E?".split("_"),weekdaysShort:"???O?E?_I?O?E?_???O?E?_??C?O?E?_????O?E?_????_O?E?".split("_"),weekdaysMin:"?_I_?_?_?_?_O".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},meridiem:function(a){return 12>a?"?E? C? U??":"E?I C? U??"},calendar:{sameDay:"[C???? ?C?E] LT",nextDay:"[??IC ?C?E] LT",nextWeek:"dddd [?C?E] LT",lastDay:"[I???? ?C?E] LT",lastWeek:"dddd [??O] [?C?E] LT",sameElse:"L"},relativeTime:{future:"I? %s",past:"%s ??O",s:"??I?? EC???",m:"?? I????",mm:"%d I????",h:"?? ?C?E",hh:"%d ?C?E",d:"?? ???",dd:"%d ???",M:"?? ?C?",MM:"%d ?C?",y:"?? ?C?",yy:"%d ?C?"},preparse:function(a){return a.replace(/[?-?]/g,function(a){return c[a]}).replace(/?/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]}).replace(/,/g,"?")},ordinal:"%d?",week:{dow:6,doy:12}})}),function(a){a(db)}(function(a){function b(a,b,d,e){var f="";switch(d){case"s":return e?"muutaman sekunnin":"muutama sekunti";case"m":return e?"minuutin":"minuutti";case"mm":f=e?"minuutin":"minuuttia";break;case"h":return e?"tunnin":"tunti";case"hh":f=e?"tunnin":"tuntia";break;case"d":return e?"p?iv?n":"p?iv?";case"dd":f=e?"p?iv?n":"p?iv??";break;case"M":return e?"kuukauden":"kuukausi";case"MM":f=e?"kuukauden":"kuukautta";break;case"y":return e?"vuoden":"vuosi";case"yy":f=e?"vuoden":"vuotta"}return f=c(a,e)+" "+f}function c(a,b){return 10>a?b?e[a]:d[a]:a}var d="nolla yksi kaksi kolme nelj? viisi kuusi seitsem?n kahdeksan yhdeks?n".split(" "),e=["nolla","yhden","kahden","kolmen","nelj?n","viiden","kuuden",d[7],d[8],d[9]];return a.lang("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes?kuu_hein?kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes?_hein?_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] LT",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] LT",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] LT",llll:"ddd, Do MMM YYYY, [klo] LT"},calendar:{sameDay:"[t?n??n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p??st?",past:"%s sitten",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("fo",{months:"januar_februar_mars_apr?l_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_m?nadagur_t?sdagur_mikudagur_h?sdagur_fr?ggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m?n_t?s_mik_h?s_fr?_ley".split("_"),weekdaysMin:"su_m?_t?_mi_h?_fr_le".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D. MMMM, YYYY LT"},calendar:{sameDay:"[? dag kl.] LT",nextDay:"[? morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[? gj?r kl.] LT",lastWeek:"[s??stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s??ani",s:"f? sekund",m:"ein minutt",mm:"%d minuttir",h:"ein t?mi",hh:"%d t?mar",d:"ein dagur",dd:"%d dagar",M:"ein m?na?i",MM:"%d m?na?ir",y:"eitt ?r",yy:"%d ?r"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(a){return a+(1===a?"er":"")}})}),function(a){a(db)}(function(a){return a.lang("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xu?o_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xu?._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_Mércores_Xoves_Venres_S?bado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mér._Xov._Ven._S?b.".split("_"),weekdaysMin:"Do_Lu_Ma_Mé_Xo_Ve_S?".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"?s":"?")+"] LT"},nextDay:function(){return"[ma?? "+(1!==this.hours()?"?s":"?")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"?s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"?":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"?s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(a){return"uns segundos"===a?"nuns segundos":"en "+a},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d?a",dd:"%d d?as",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinal:"%d?",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("he",{months:"?????_??????_???_?????_???_????_????_??????_??????_???????_??????_?????".split("_"),monthsShort:"????_????_???_????_???_????_????_????_????_????_????_????".split("_"),weekdays:"?????_???_?????_?????_?????_????_???".split("_"),weekdaysShort:"??_??_??_??_??_??_??".split("_"),weekdaysMin:"?_?_?_?_?_?_?".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [?]MMMM YYYY",LLL:"D [?]MMMM YYYY LT",LLLL:"dddd, D [?]MMMM YYYY LT",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[???? ??]LT",nextDay:"[??? ??]LT",nextWeek:"dddd [????] LT",lastDay:"[????? ??]LT",lastWeek:"[????] dddd [?????? ????] LT",sameElse:"L"},relativeTime:{future:"???? %s",past:"???? %s",s:"???? ?????",m:"???",mm:"%d ????",h:"???",hh:function(a){return 2===a?"??????":a+" ????"},d:"???",dd:function(a){return 2===a?"??????":a+" ????"},M:"????",MM:function(a){return 2===a?"???????":a+" ??????"},y:"???",yy:function(a){return 2===a?"??????":a+" ????"}}})}),function(a){a(db)}(function(a){var b={1:"?",2:"?",3:"?",4:"?",5:"?",6:"?",7:"?",8:"?",9:"?",0:"?"},c={"?":"1","?":"2","?":"3","?":"4","?":"5","?":"6","?":"7","?":"8","?":"9","?":"0"};return a.lang("hi",{months:"?????_??????_?????_??????_??_???_?????_?????_???????_???????_??????_???????".split("_"),monthsShort:"??._???._?????_?????._??_???_???._??._???._?????._??._???.".split("_"),weekdays:"??????_??????_???????_??????_???????_????????_??????".split("_"),weekdaysShort:"???_???_????_???_????_?????_???".split("_"),weekdaysMin:"?_??_??_??_??_??_?".split("_"),longDateFormat:{LT:"A h:mm ???",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[??] LT",nextDay:"[??] LT",nextWeek:"dddd, LT",lastDay:"[??] LT",lastWeek:"[?????] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ???",past:"%s ????",s:"??? ?? ????",m:"?? ????",mm:"%d ????",h:"?? ????",hh:"%d ????",d:"?? ???",dd:"%d ???",M:"?? ?????",MM:"%d ?????",y:"?? ????",yy:"%d ????"},preparse:function(a){return a.replace(/[??????????]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 4>a?"???":10>a?"????":17>a?"?????":20>a?"???":"???"},week:{dow:0,doy:6}})}),function(a){a(db)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}return a.lang("hr",{months:"sje?anj_velja?a_o?ujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),monthsShort:"sje._vel._o?u._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_?etvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._?et._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_?e_pe_su".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju?er u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro?lu] dddd [u] LT";case 6:return"[pro?le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro?li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:b,mm:b,h:b,hh:b,d:"dan",dd:b,M:"mjesec",MM:b,y:"godinu",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){function b(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néh?ny m?sodperc":"néh?ny m?sodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" ?ra":" ?r?ja");case"hh":return e+(d||b?" ?ra":" ?r?ja");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" h?nap":" h?napja");case"MM":return e+(d||b?" h?nap":" h?napja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function c(a){return(a?"":"[m?lt] ")+"["+d[this.day()]+"] LT[-kor]"}var d="vas?rnap hétf?n kedden szerd?n csüt?rt?k?n pénteken szombaton".split(" ");return a.lang("hu",{months:"janu?r_febru?r_m?rcius_?prilis_m?jus_j?nius_j?lius_augusztus_szeptember_okt?ber_november_december".split("_"),monthsShort:"jan_feb_m?rc_?pr_m?j_j?n_j?l_aug_szept_okt_nov_dec".split("_"),weekdays:"vas?rnap_hétf?_kedd_szerda_csüt?rt?k_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D., LT",LLLL:"YYYY. MMMM D., dddd LT"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return c.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return c.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m?lva",past:"%s",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){function b(a,b){var c={nominative:"???????_???????_????_?????_?????_??????_??????_???????_?????????_?????????_????????_?????????".split("_"),accusative:"????????_????????_?????_??????_??????_???????_???????_????????_??????????_??????????_?????????_??????????".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function c(a){var b="???_???_???_???_???_???_???_???_???_???_???_???".split("_");return b[a.month()]}function d(a){var b="??????_??????????_?????????_??????????_?????????_??????_?????".split("_");return b[a.day()]}return a.lang("hy-am",{months:b,monthsShort:c,weekdays:d,weekdaysShort:"???_???_???_???_???_????_???".split("_"),weekdaysMin:"???_???_???_???_???_????_???".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY ?.",LLL:"D MMMM YYYY ?., LT",LLLL:"dddd, D MMMM YYYY ?., LT"},calendar:{sameDay:"[?????] LT",nextDay:"[????] LT",lastDay:"[????] LT",nextWeek:function(){return"dddd [??? ????] LT"},lastWeek:function(){return"[?????] dddd [??? ????] LT"},sameElse:"L"},relativeTime:{future:"%s ????",past:"%s ????",s:"?? ???? ????????",m:"????",mm:"%d ????",h:"???",hh:"%d ???",d:"??",dd:"%d ??",M:"????",MM:"%d ????",y:"????",yy:"%d ????"},meridiem:function(a){return 4>a?"???????":12>a?"????????":17>a?"???????":"????????"},ordinal:function(a,b){switch(b){case"DDD":case"w":case"W":case"DDDo":return 1===a?a+"-??":a+"-??";default:return a}},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(a){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){function b(a){return a%100===11?!0:a%10===1?!1:!0}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"nokkrar sek?ndur":"nokkrum sek?ndum";case"m":return c?"m?n?ta":"m?n?tu";case"mm":return b(a)?f+(c||e?"m?n?tur":"m?n?tum"):c?f+"m?n?ta":f+"m?n?tu";case"hh":return b(a)?f+(c||e?"klukkustundir":"klukkustundum"):f+"klukkustund";case"d":return c?"dagur":e?"dag":"degi";case"dd":return b(a)?c?f+"dagar":f+(e?"daga":"d?gum"):c?f+"dagur":f+(e?"dag":"degi");case"M":return c?"m?nu?ur":e?"m?nu?":"m?nu?i";case"MM":return b(a)?c?f+"m?nu?ir":f+(e?"m?nu?i":"m?nu?um"):c?f+"m?nu?ur":f+(e?"m?nu?":"m?nu?i");case"y":return c||e?"?r":"?ri";case"yy":return b(a)?f+(c||e?"?r":"?rum"):f+(c||e?"?r":"?ri")}}return a.lang("is",{months:"jan?ar_febr?ar_mars_apr?l_ma?_j?n?_j?l?_?g?st_september_okt?ber_n?vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma?_j?n_j?l_?g?_sep_okt_n?v_des".split("_"),weekdays:"sunnudagur_m?nudagur_?ri?judagur_mi?vikudagur_fimmtudagur_f?studagur_laugardagur".split("_"),weekdaysShort:"sun_m?n_?ri_mi?_fim_f?s_lau".split("_"),weekdaysMin:"Su_M?_?r_Mi_Fi_F?_La".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd, D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[? dag kl.] LT",nextDay:"[? morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[? g?r kl.] LT",lastWeek:"[s??asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s??an",s:c,m:c,mm:c,h:"klukkustund",hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinal:"%d.",week:{dow:1,doy:4}})
}),function(a){a(db)}(function(a){return a.lang("it",{months:"Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"),monthsShort:"Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"),weekdays:"Domenica_Luned?_Marted?_Mercoled?_Gioved?_Venerd?_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:"[lo scorso] dddd [alle] LT",sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:"%d?",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("ja",{months:"1?_2?_3?_4?_5?_6?_7?_8?_9?_10?_11?_12?".split("_"),monthsShort:"1?_2?_3?_4?_5?_6?_7?_8?_9?_10?_11?_12?".split("_"),weekdays:"???_???_???_???_???_???_???".split("_"),weekdaysShort:"?_?_?_?_?_?_?".split("_"),weekdaysMin:"?_?_?_?_?_?_?".split("_"),longDateFormat:{LT:"Ah?m?",L:"YYYY/MM/DD",LL:"YYYY?M?D?",LLL:"YYYY?M?D?LT",LLLL:"YYYY?M?D?LT dddd"},meridiem:function(a){return 12>a?"??":"??"},calendar:{sameDay:"[??] LT",nextDay:"[??] LT",nextWeek:"[??]dddd LT",lastDay:"[??] LT",lastWeek:"[??]dddd LT",sameElse:"L"},relativeTime:{future:"%s?",past:"%s?",s:"??",m:"1?",mm:"%d?",h:"1??",hh:"%d??",d:"1?",dd:"%d?",M:"1??",MM:"%d??",y:"1?",yy:"%d?"}})}),function(a){a(db)}(function(a){function b(a,b){var c={nominative:"???????_?????????_?????_??????_?????_??????_??????_???????_??????????_?????????_????????_?????????".split("_"),accusative:"???????_?????????_?????_???????_?????_??????_??????_???????_??????????_?????????_????????_?????????".split("_")},d=/D[oD] *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function c(a,b){var c={nominative:"?????_????????_?????????_?????????_?????????_?????????_??????".split("_"),accusative:"??????_????????_?????????_?????????_?????????_?????????_??????".split("_")},d=/(????|??????)/.test(b)?"accusative":"nominative";return c[d][a.day()]}return a.lang("ka",{months:b,monthsShort:"???_???_???_???_???_???_???_???_???_???_???_???".split("_"),weekdays:c,weekdaysShort:"???_???_???_???_???_???_???".split("_"),weekdaysMin:"??_??_??_??_??_??_??".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[????] LT[-??]",nextDay:"[????] LT[-??]",lastDay:"[?????] LT[-??]",nextWeek:"[??????] dddd LT[-??]",lastWeek:"[????] dddd LT-??",sameElse:"L"},relativeTime:{future:function(a){return/(????|????|?????|????)/.test(a)?a.replace(/?$/,"??"):a+"??"},past:function(a){return/(????|????|?????|???|???)/.test(a)?a.replace(/(?|?)$/,"?? ???"):/????/.test(a)?a.replace(/????$/,"???? ???"):void 0},s:"????????? ????",m:"????",mm:"%d ????",h:"?????",hh:"%d ?????",d:"???",dd:"%d ???",M:"???",MM:"%d ???",y:"????",yy:"%d ????"},ordinal:function(a){return 0===a?a:1===a?a+"-??":20>a||100>=a&&a%20===0||a%100===0?"??-"+a:a+"-?"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("ko",{months:"1?_2?_3?_4?_5?_6?_7?_8?_9?_10?_11?_12?".split("_"),monthsShort:"1?_2?_3?_4?_5?_6?_7?_8?_9?_10?_11?_12?".split("_"),weekdays:"???_???_???_???_???_???_???".split("_"),weekdaysShort:"?_?_?_?_?_?_?".split("_"),weekdaysMin:"?_?_?_?_?_?_?".split("_"),longDateFormat:{LT:"A h? mm?",L:"YYYY.MM.DD",LL:"YYYY? MMMM D?",LLL:"YYYY? MMMM D? LT",LLLL:"YYYY? MMMM D? dddd LT"},meridiem:function(a){return 12>a?"??":"??"},calendar:{sameDay:"?? LT",nextDay:"?? LT",nextWeek:"dddd LT",lastDay:"?? LT",lastWeek:"??? dddd LT",sameElse:"L"},relativeTime:{future:"%s ?",past:"%s ?",s:"??",ss:"%d?",m:"??",mm:"%d?",h:"???",hh:"%d??",d:"??",dd:"%d?",M:"??",MM:"%d?",y:"??",yy:"%d?"},ordinal:"%d?",meridiemParse:/(??|??)/,isPM:function(a){return"??"===a}})}),function(a){a(db)}(function(a){function b(a,b,c){var d={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],dd:[a+" Deeg",a+" Deeg"],M:["ee Mount","engem Mount"],MM:[a+" Méint",a+" Méint"],y:["ee Joer","engem Joer"],yy:[a+" Joer",a+" Joer"]};return b?d[c][0]:d[c][1]}function c(a){var b=a.substr(0,a.indexOf(" "));return g(b)?"a "+a:"an "+a}function d(a){var b=a.substr(0,a.indexOf(" "));return g(b)?"viru "+a:"virun "+a}function e(){var a=this.format("d");return f(a)?"[Leschte] dddd [um] LT":"[Leschten] dddd [um] LT"}function f(a){switch(a=parseInt(a,10)){case 0:case 1:case 3:case 5:case 6:return!0;default:return!1}}function g(a){if(a=parseInt(a,10),isNaN(a))return!1;if(0>a)return!0;if(10>a)return a>=4&&7>=a?!0:!1;if(100>a){var b=a%10,c=a/10;return 0===b?g(c):g(b)}if(1e4>a){for(;a>=10;)a/=10;return g(a)}return a/=1e3,g(a)}return a.lang("lb",{months:"Januar_Februar_M?erz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:e},relativeTime:{future:c,past:d,s:"e puer Sekonnen",m:b,mm:"%d Minutten",h:b,hh:"%d Stonnen",d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c,d){return b?"kelios sekund?s":d?"keli? sekund?i?":"kelias sekundes"}function c(a,b,c,d){return b?e(c)[0]:d?e(c)[1]:e(c)[2]}function d(a){return a%10===0||a>10&&20>a}function e(a){return h[a].split("_")}function f(a,b,f,g){var h=a+" ";return 1===a?h+c(a,b,f[0],g):b?h+(d(a)?e(f)[1]:e(f)[0]):g?h+e(f)[1]:h+(d(a)?e(f)[1]:e(f)[2])}function g(a,b){var c=-1===b.indexOf("dddd LT"),d=i[a.weekday()];return c?d:d.substring(0,d.length-2)+"?"}var h={m:"minut?_minut?s_minut?",mm:"minut?s_minu?i?_minutes",h:"valanda_valandos_valand?",hh:"valandos_valand?_valandas",d:"diena_dienos_dien?",dd:"dienos_dien?_dienas",M:"m?nuo_m?nesio_m?nes?",MM:"m?nesiai_m?nesi?_m?nesius",y:"metai_met?_metus",yy:"metai_met?_metus"},i="pirmadienis_antradienis_tre?iadienis_ketvirtadienis_penktadienis_?e?tadienis_sekmadienis".split("_");return a.lang("lt",{months:"sausio_vasario_kovo_baland?io_gegu??s_bir??lio_liepos_rugpj??io_rugs?jo_spalio_lapkri?io_gruod?io".split("_"),monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:g,weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_?e?".split("_"),weekdaysMin:"S_P_A_T_K_Pn_?".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], LT [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, LT [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], LT [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, LT [val.]"},calendar:{sameDay:"[?iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra?jus?] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie? %s",s:b,m:c,mm:f,h:c,hh:f,d:c,dd:f,M:c,MM:f,y:c,yy:f},ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c){var d=a.split("_");return c?b%10===1&&11!==b?d[2]:d[3]:b%10===1&&11!==b?d[0]:d[1]}function c(a,c,e){return a+" "+b(d[e],a,c)}var d={mm:"min?ti_min?tes_min?te_min?tes",hh:"stundu_stundas_stunda_stundas",dd:"dienu_dienas_diena_dienas",MM:"m?nesi_m?ne?us_m?nesis_m?ne?i",yy:"gadu_gadus_gads_gadi"};return a.lang("lv",{months:"janv?ris_febru?ris_marts_apr?lis_maijs_j?nijs_j?lijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j?n_j?l_aug_sep_okt_nov_dec".split("_"),weekdays:"sv?tdiena_pirmdiena_otrdiena_tre?diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, LT",LLLL:"YYYY. [gada] D. MMMM, dddd, LT"},calendar:{sameDay:"[?odien pulksten] LT",nextDay:"[R?t pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag?ju??] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"%s v?l?k",past:"%s agr?k",s:"da?as sekundes",m:"min?ti",mm:c,h:"stundu",hh:c,d:"dienu",dd:c,M:"m?nesi",MM:c,y:"gadu",yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("mk",{months:"???????_????????_????_?????_???_????_????_??????_?????????_????????_???????_????????".split("_"),monthsShort:"???_???_???_???_???_???_???_???_???_???_???_???".split("_"),weekdays:"??????_??????????_???????_?????_????????_?????_??????".split("_"),weekdaysShort:"???_???_???_???_???_???_???".split("_"),weekdaysMin:"?e_?o_??_??_??_??_?a".split("_"),longDateFormat:{LT:"H:mm",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[????? ??] LT",nextDay:"[???? ??] LT",nextWeek:"dddd [??] LT",lastDay:"[????? ??] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[?? ??????????] dddd [??] LT";case 1:case 2:case 4:case 5:return"[?? ??????????] dddd [??] LT"}},sameElse:"L"},relativeTime:{future:"????? %s",past:"???? %s",s:"??????? ???????",m:"??????",mm:"%d ??????",h:"???",hh:"%d ????",d:"???",dd:"%d ????",M:"?????",MM:"%d ??????",y:"??????",yy:"%d ??????"},ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-??":0===c?a+"-??":c>10&&20>c?a+"-??":1===b?a+"-??":2===b?a+"-??":7===b||8===b?a+"-??":a+"-??"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("ml",{months:"??????_?????????_???????_??????_????_???_????_????????_??????????_???????_?????_??????".split("_"),monthsShort:"???._??????._???._?????._????_???_????._??._???????._?????._???._????.".split("_"),weekdays:"????????_??????????_?????????_????????_?????????_???????????_????????".split("_"),weekdaysShort:"????_??????_?????_????_??????_??????_???".split("_"),weekdaysMin:"??_??_??_??_????_??_?".split("_"),longDateFormat:{LT:"A h:mm -??",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[?????] LT",nextDay:"[????] LT",nextWeek:"dddd, LT",lastDay:"[??????] LT",lastWeek:"[??????] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ???????",past:"%s ?????",s:"??? ?????????",m:"??? ????????",mm:"%d ????????",h:"??? ????????",hh:"%d ????????",d:"??? ?????",dd:"%d ?????",M:"??? ????",MM:"%d ????",y:"??? ????",yy:"%d ????"},meridiem:function(a){return 4>a?"??????":12>a?"??????":17>a?"???? ???????":20>a?"??????????":"??????"}})}),function(a){a(db)}(function(a){var b={1:"?",2:"?",3:"?",4:"?",5:"?",6:"?",7:"?",8:"?",9:"?",0:"?"},c={"?":"1","?":"2","?":"3","?":"4","?":"5","?":"6","?":"7","?":"8","?":"9","?":"0"};return a.lang("mr",{months:"????????_??????????_?????_??????_??_???_????_?????_????????_???????_?????????_???????".split("_"),monthsShort:"????._??????._?????._?????._??._???._????._??._??????._?????._???????._?????.".split("_"),weekdays:"??????_??????_???????_??????_???????_????????_??????".split("_"),weekdaysShort:"???_???_????_???_????_?????_???".split("_"),weekdaysMin:"?_??_??_??_??_??_?".split("_"),longDateFormat:{LT:"A h:mm ?????",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[??] LT",nextDay:"[?????] LT",nextWeek:"dddd, LT",lastDay:"[???] LT",lastWeek:"[?????] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ????",past:"%s ??????",s:"?????",m:"?? ?????",mm:"%d ??????",h:"?? ???",hh:"%d ???",d:"?? ????",dd:"%d ????",M:"?? ?????",MM:"%d ?????",y:"?? ????",yy:"%d ?????"},preparse:function(a){return a.replace(/[??????????]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 4>a?"??????":10>a?"?????":17>a?"??????":20>a?"????????":"??????"},week:{dow:0,doy:6}})}),function(a){a(db)}(function(a){return a.lang("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(a){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),weekdays:"s?ndag_mandag_tirsdag_onsdag_torsdag_fredag_l?rdag".split("_"),weekdaysShort:"s?._ma._ti._on._to._fr._l?.".split("_"),weekdaysMin:"s?_ma_ti_on_to_fr_l?".split("_"),longDateFormat:{LT:"H.mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i g?r kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en m?ned",MM:"%d m?neder",y:"ett ?r",yy:"%d ?r"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){var b={1:"?",2:"?",3:"?",4:"?",5:"?",6:"?",7:"?",8:"?",9:"?",0:"?"},c={"?":"1","?":"2","?":"3","?":"4","?":"5","?":"6","?":"7","?":"8","?":"9","?":"0"};return a.lang("ne",{months:"?????_?????????_?????_??????_??_???_?????_?????_??????????_???????_????????_????????".split("_"),monthsShort:"??._??????._?????_?????._??_???_?????._??._?????._?????._????._????.".split("_"),weekdays:"??????_??????_????????_??????_???????_????????_??????".split("_"),weekdaysShort:"???._???._?????._???._????._?????._???.".split("_"),weekdaysMin:"??._??._???_??._??._??._?.".split("_"),longDateFormat:{LT:"A?? h:mm ???",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},preparse:function(a){return a.replace(/[??????????]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 3>a?"????":10>a?"?????":15>a?"??????":18>a?"??????":20>a?"????":"????"},calendar:{sameDay:"[??] LT",nextDay:"[????] LT",nextWeek:"[?????] dddd[,] LT",lastDay:"[????] LT",lastWeek:"[????] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s??",past:"%s ?????",s:"???? ???",m:"?? ?????",mm:"%d ?????",h:"?? ?????",hh:"%d ?????",d:"?? ???",dd:"%d ???",M:"?? ?????",MM:"%d ?????",y:"?? ????",yy:"%d ????"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){var b="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),c="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");return a.lang("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,d){return/-MMM-/.test(d)?c[a.month()]:b[a.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_m?ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_m?n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_m?_ty_on_to_fr_l?".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g?r klokka] LT",lastWeek:"[F?reg?ende] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekund",m:"ett minutt",mm:"%d minutt",h:"en time",hh:"%d timar",d:"en dag",dd:"%d dagar",M:"en m?nad",MM:"%d m?nader",y:"ett ?r",yy:"%d ?r"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function c(a,c,d){var e=a+" ";switch(d){case"m":return c?"minuta":"minut?";case"mm":return e+(b(a)?"minuty":"minut");case"h":return c?"godzina":"godzin?";case"hh":return e+(b(a)?"godziny":"godzin");case"MM":return e+(b(a)?"miesi?ce":"miesi?cy");case"yy":return e+(b(a)?"lata":"lat")}}var d="stycze?_luty_marzec_kwiecie?_maj_czerwiec_lipiec_sierpie?_wrzesie?_pa?dziernik_listopad_grudzie?".split("_"),e="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze?nia_pa?dziernika_listopada_grudnia".split("_");return a.lang("pl",{months:function(a,b){return/D MMMM/.test(b)?e[a.month()]:d[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa?_lis_gru".split("_"),weekdays:"niedziela_poniedzia?ek_wtorek_?roda_czwartek_pi?tek_sobota".split("_"),weekdaysShort:"nie_pon_wt_?r_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_?r_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Dzi? o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz?? niedziel? o] LT";case 3:return"[W zesz?? ?rod? o] LT";case 6:return"[W zesz?? sobot? o] LT";default:return"[W zesz?y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:c,mm:c,h:c,hh:c,d:"1 dzie?",dd:"%d dni",M:"miesi?c",MM:c,y:"rok",yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_S?bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S?b".split("_"),weekdaysMin:"Dom_2?_3?_4?_5?_6?_S?b".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanh? às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[?ltimo] dddd [às] LT":"[?ltima] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atr?s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%d?"})}),function(a){a(db)}(function(a){return a.lang("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_S?bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S?b".split("_"),weekdaysMin:"Dom_2?_3?_4?_5?_6?_S?b".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanh? às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[?ltimo] dddd [às] LT":"[?ltima] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atr?s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%d?",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]}return a.lang("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian_feb_mar_apr_mai_iun_iul_aug_sep_oct_noi_dec".split("_"),weekdays:"duminic?_luni_mar?i_miercuri_joi_vineri_sâmb?t?".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urm?",s:"câteva secunde",m:"un minut",mm:b,h:"o or?",hh:b,d:"o zi",dd:b,M:"o lun?",MM:b,y:"un an",yy:b},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mesec":2===a||3===a||4===a?"meseca":"meseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}return a.lang("rs",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljak_utorak_sreda_?etvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._?et._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_?e_pe_su".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju?e u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro?lu] dddd [u] LT";case 6:return"[pro?le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro?li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"par sekundi",m:b,mm:b,h:b,hh:b,d:"dan",dd:b,M:"mesec",MM:b,y:"godinu",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:"??????_??????_?????",hh:"???_????_?????",dd:"????_???_????",MM:"?????_??????_???????",yy:"???_????_???"};return"m"===d?c?"??????":"??????":a+" "+b(e[d],+a)}function d(a,b){var c={nominative:"??????_???????_????_??????_???_????_????_??????_????????_???????_??????_???????".split("_"),accusative:"??????_???????_?????_??????_???_????_????_???????_????????_???????_??????_???????".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function e(a,b){var c={nominative:"???_???_???_???_???_????_????_???_???_???_???_???".split("_"),accusative:"???_???_???_???_???_????_????_???_???_???_???_???".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function f(a,b){var c={nominative:"???????????_???????????_???????_?????_???????_???????_???????".split("_"),accusative:"???????????_???????????_???????_?????_???????_???????_???????".split("_")},d=/\[ ?[??] ?(?:???????|?????????)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]}return a.lang("ru",{months:d,monthsShort:e,weekdays:f,weekdaysShort:"??_??_??_??_??_??_??".split("_"),weekdaysMin:"??_??_??_??_??_??_??".split("_"),monthsParse:[/^???/i,/^???/i,/^???/i,/^???/i,/^??[?|?]/i,/^???/i,/^???/i,/^???/i,/^???/i,/^???/i,/^???/i,/^???/i],longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY ?.",LLL:"D MMMM YYYY ?., LT",LLLL:"dddd, D MMMM YYYY ?., LT"},calendar:{sameDay:"[??????? ?] LT",nextDay:"[?????? ?] LT",lastDay:"[????? ?] LT",nextWeek:function(){return 2===this.day()?"[??] dddd [?] LT":"[?] dddd [?] LT"},lastWeek:function(){switch(this.day()){case 0:return"[? ???????] dddd [?] LT";case 1:case 2:case 4:return"[? ???????] dddd [?] LT";case 3:case 5:case 6:return"[? ???????] dddd [?] LT"}},sameElse:"L"},relativeTime:{future:"????? %s",past:"%s ?????",s:"????????? ??????",m:c,mm:c,h:"???",hh:c,d:"????",dd:c,M:"?????",MM:c,y:"???",yy:c},meridiem:function(a){return 4>a?"????":12>a?"????":17>a?"???":"??????"},ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-?";case"D":return a+"-??";case"w":case"W":return a+"-?";default:return a}},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){function b(a){return a>1&&5>a}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"p?r sek?nd":"p?r sekundami";case"m":return c?"min?ta":e?"min?tu":"min?tou";case"mm":return c||e?f+(b(a)?"min?ty":"min?t"):f+"min?tami";break;case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(b(a)?"hodiny":"hod?n"):f+"hodinami";break;case"d":return c||e?"de?":"d?om";case"dd":return c||e?f+(b(a)?"dni":"dn?"):f+"d?ami";break;case"M":return c||e?"mesiac":"mesiacom";case"MM":return c||e?f+(b(a)?"mesiace":"mesiacov"):f+"mesiacmi";break;case"y":return c||e?"rok":"rokom";case"yy":return c||e?f+(b(a)?"roky":"rokov"):f+"rokmi"}}var d="janu?r_febru?r_marec_apr?l_m?j_j?n_j?l_august_september_okt?ber_november_december".split("_"),e="jan_feb_mar_apr_m?j_j?n_j?l_aug_sep_okt_nov_dec".split("_");return a.lang("sk",{months:d,monthsShort:e,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(d,e),weekdays:"nede?a_pondelok_utorok_streda_?tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_?t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_?t_pi_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede?u o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo ?tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v?era o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul? nede?u o] LT";case 1:case 2:return"[minul?] dddd [o] LT";case 3:return"[minul? stredu o] LT";case 4:case 5:return"[minul?] dddd [o] LT";case 6:return"[minul? sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"ena minuta":"eno minuto";case"mm":return d+=1===a?"minuta":2===a?"minuti":3===a||4===a?"minute":"minut";case"h":return b?"ena ura":"eno uro";case"hh":return d+=1===a?"ura":2===a?"uri":3===a||4===a?"ure":"ur";case"dd":return d+=1===a?"dan":"dni";case"MM":return d+=1===a?"mesec":2===a?"meseca":3===a||4===a?"mesece":"mesecev";case"yy":return d+=1===a?"leto":2===a?"leti":3===a||4===a?"leta":"let"}}return a.lang("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_?etrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._?et._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_?e_pe_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v?eraj ob] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[prej?nja] dddd [ob] LT";case 1:case 2:case 4:case 5:return"[prej?nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"?ez %s",past:"%s nazaj",s:"nekaj sekund",m:b,mm:b,h:b,hh:b,d:"en dan",dd:b,M:"en mesec",MM:b,y:"eno leto",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Marte_E Mërkure_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Neser në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s me parë",s:"disa sekonda",m:"një minut",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s?ndag_m?ndag_tisdag_onsdag_torsdag_fredag_l?rdag".split("_"),weekdaysShort:"s?n_m?n_tis_ons_tor_fre_l?r".split("_"),weekdaysMin:"s?_m?_ti_on_to_fr_l?".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig?r] LT",nextWeek:"dddd LT",lastWeek:"[F?rra] dddd[en] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f?r %s sedan",s:"n?gra sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m?nad",MM:"%d m?nader",y:"ett ?r",yy:"%d ?r"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":3===b?"e":"e";return a+c},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("ta",{months:"?????_????????_??????_??????_??_????_????_??????_???????????_?????????_???????_????????".split("_"),monthsShort:"?????_????????_??????_??????_??_????_????_??????_???????????_?????????_???????_????????".split("_"),weekdays:"???????????????_????????????_?????????????_??????????_????????????_?????????????_??????????".split("_"),weekdaysShort:"??????_???????_????????_?????_???????_??????_???".split("_"),weekdaysMin:"??_??_??_??_??_??_?".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[?????] LT",nextDay:"[????] LT",nextWeek:"dddd, LT",lastDay:"[??????] LT",lastWeek:"[????? ?????] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ???",past:"%s ????",s:"??? ??? ?????????",m:"??? ???????",mm:"%d ??????????",h:"??? ??? ?????",hh:"%d ??? ?????",d:"??? ????",dd:"%d ???????",M:"??? ?????",MM:"%d ????????",y:"??? ??????",yy:"%d ????????"},ordinal:function(a){return a+"???"
},meridiem:function(a){return a>=6&&10>=a?" ????":a>=10&&14>=a?" ???????":a>=14&&18>=a?" ???????":a>=18&&20>=a?" ????":a>=20&&24>=a?" ????":a>=0&&6>=a?" ?????":void 0},week:{dow:0,doy:6}})}),function(a){a(db)}(function(a){return a.lang("th",{months:"??????_??????????_??????_??????_???????_????????_???????_???????_???????_??????_?????????_???????".split("_"),monthsShort:"????_?????_????_????_?????_??????_?????_?????_?????_????_???????_?????".split("_"),weekdays:"???????_??????_??????_???_????????_?????_?????".split("_"),weekdaysShort:"???????_??????_??????_???_?????_?????_?????".split("_"),weekdaysMin:"??._?._?._?._??._?._?.".split("_"),longDateFormat:{LT:"H ?????? m ????",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY ???? LT",LLLL:"???dddd??? D MMMM YYYY ???? LT"},meridiem:function(a){return 12>a?"??????????":"??????????"},calendar:{sameDay:"[?????? ????] LT",nextDay:"[???????? ????] LT",nextWeek:"dddd[???? ????] LT",lastDay:"[??????????? ????] LT",lastWeek:"[???]dddd[??????? ????] LT",sameElse:"L"},relativeTime:{future:"??? %s",past:"%s???????",s:"????????????",m:"1 ????",mm:"%d ????",h:"1 ???????",hh:"%d ???????",d:"1 ???",dd:"%d ???",M:"1 ?????",MM:"%d ?????",y:"1 ??",yy:"%d ??"}})}),function(a){a(db)}(function(a){return a.lang("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM DD, YYYY LT"},calendar:{sameDay:"[Ngayon sa] LT",nextDay:"[Bukas sa] LT",nextWeek:"dddd [sa] LT",lastDay:"[Kahapon sa] LT",lastWeek:"dddd [huling linggo] LT",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},ordinal:function(a){return a},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){var b={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'nc?",9:"'uncu",10:"'uncu",30:"'uncu",60:"'?nc?",90:"'?nc?"};return a.lang("tr",{months:"Ocak_?ubat_Mart_Nisan_May?s_Haziran_Temmuz_A?ustos_Eylül_Ekim_Kas?m_Aral?k".split("_"),monthsShort:"Oca_?ub_Mar_Nis_May_Haz_Tem_A?u_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal?_Car?amba_Per?embe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Car_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ca_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yar?n saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s ?nce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir y?l",yy:"%d y?l"},ordinal:function(a){if(0===a)return a+"'?nc?";var c=a%10,d=a%100-c,e=a>=100?100:null;return a+(b[c]||b[d]||b[e])},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("tzm-la",{months:"innayr_br?ayr?_mar?s?_ibrir_mayyw_ywnyw_ywlywz_?w?t_?wtanbir_kt?wbr?_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br?ayr?_mar?s?_ibrir_mayyw_ywnyw_ywlywz_?w?t_?wtanbir_kt?wbr?_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi?yas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi?yas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi?yas".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minu?",mm:"%d minu?",h:"sa?a",hh:"%d tassa?in",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}),function(a){a(db)}(function(a){return a.lang("tzm",{months:"??????_?????_????_?????_?????_?????_??????_????_????????_?????_????????_???????".split("_"),monthsShort:"??????_?????_????_?????_?????_?????_??????_????_????????_?????_????????_???????".split("_"),weekdays:"??????_?????_??????_?????_?????_???????_???????".split("_"),weekdaysShort:"??????_?????_??????_?????_?????_???????_???????".split("_"),weekdaysMin:"??????_?????_??????_?????_?????_???????_???????".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[???? ?] LT",nextDay:"[???? ?] LT",nextWeek:"dddd [?] LT",lastDay:"[????? ?] LT",lastWeek:"dddd [?] LT",sameElse:"L"},relativeTime:{future:"???? ? ??? %s",past:"??? %s",s:"????",m:"?????",mm:"%d ?????",h:"????",hh:"%d ????????",d:"???",dd:"%d o????",M:"??o??",MM:"%d ??????",y:"?????",yy:"%d ??????"},week:{dow:6,doy:12}})}),function(a){a(db)}(function(a){function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:"???????_???????_??????",hh:"??????_??????_?????",dd:"????_???_????",MM:"??????_??????_???????",yy:"???_????_?????"};return"m"===d?c?"???????":"???????":"h"===d?c?"??????":"??????":a+" "+b(e[d],+a)}function d(a,b){var c={nominative:"??????_?????_????????_???????_???????_???????_??????_???????_????????_???????_????????_???????".split("_"),accusative:"?????_??????_???????_??????_??????_??????_?????_??????_???????_??????_?????????_??????".split("_")},d=/D[oD]? *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function e(a,b){var c={nominative:"??????_?????????_????????_??????_??????_?’??????_??????".split("_"),accusative:"??????_?????????_????????_??????_??????_?’??????_??????".split("_"),genitive:"??????_?????????_????????_??????_????????_?’??????_??????".split("_")},d=/(\[[????]\]) ?dddd/.test(b)?"accusative":/\[?(?:???????|?????????)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function f(a){return function(){return a+"?"+(11===this.hours()?"?":"")+"] LT"}}return a.lang("uk",{months:d,monthsShort:"???_???_???_????_????_????_???_????_???_????_????_????".split("_"),weekdays:e,weekdaysShort:"??_??_??_??_??_??_??".split("_"),weekdaysMin:"??_??_??_??_??_??_??".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY ?.",LLL:"D MMMM YYYY ?., LT",LLLL:"dddd, D MMMM YYYY ?., LT"},calendar:{sameDay:f("[???????? "),nextDay:f("[?????? "),lastDay:f("[????? "),nextWeek:f("[?] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return f("[???????] dddd [").call(this);case 1:case 2:case 4:return f("[????????] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"?? %s",past:"%s ????",s:"???????? ??????",m:c,mm:c,h:"??????",hh:c,d:"????",dd:c,M:"??????",MM:c,y:"???",yy:c},meridiem:function(a){return 4>a?"????":12>a?"?????":17>a?"???":"??????"},ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-?";case"D":return a+"-??";default:return a}},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("uz",{months:"??????_???????_????_??????_???_????_????_??????_????????_???????_??????_???????".split("_"),monthsShort:"???_???_???_???_???_???_???_???_???_???_???_???".split("_"),weekdays:"???????_???????_???????_????????_????????_????_?????".split("_"),weekdaysShort:"???_???_???_???_???_???_???".split("_"),weekdaysMin:"??_??_??_??_??_??_??".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"D MMMM YYYY, dddd LT"},calendar:{sameDay:"[????? ????] LT [??]",nextDay:"[??????] LT [??]",nextWeek:"dddd [???? ????] LT [??]",lastDay:"[???? ????] LT [??]",lastWeek:"[?????] dddd [???? ????] LT [??]",sameElse:"L"},relativeTime:{future:"???? %s ?????",past:"??? ???? %s ?????",s:"??????",m:"??? ??????",mm:"%d ??????",h:"??? ????",hh:"%d ????",d:"??? ???",dd:"%d ???",M:"??? ??",MM:"%d ??",y:"??? ???",yy:"%d ???"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("vn",{months:"th?ng 1_th?ng 2_th?ng 3_th?ng 4_th?ng 5_th?ng 6_th?ng 7_th?ng 8_th?ng 9_th?ng 10_th?ng 11_th?ng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdays:"ch? nh?t_th? hai_th? ba_th? t?_th? n?m_th? s?u_th? b?y".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM [n?m] YYYY",LLL:"D MMMM [n?m] YYYY LT",LLLL:"dddd, D MMMM [n?m] YYYY LT",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[Hôm nay l?c] LT",nextDay:"[Ngày mai l?c] LT",nextWeek:"dddd [tu?n t?i l?c] LT",lastDay:"[Hôm qua l?c] LT",lastWeek:"dddd [tu?n r?i l?c] LT",sameElse:"L"},relativeTime:{future:"%s t?i",past:"%s tr??c",s:"vài giây",m:"m?t ph?t",mm:"%d ph?t",h:"m?t gi?",hh:"%d gi?",d:"m?t ngày",dd:"%d ngày",M:"m?t th?ng",MM:"%d th?ng",y:"m?t n?m",yy:"%d n?m"},ordinal:function(a){return a},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("zh-cn",{months:"??_??_??_??_??_??_??_??_??_??_???_???".split("_"),monthsShort:"1?_2?_3?_4?_5?_6?_7?_8?_9?_10?_11?_12?".split("_"),weekdays:"???_???_???_???_???_???_???".split("_"),weekdaysShort:"??_??_??_??_??_??_??".split("_"),weekdaysMin:"?_?_?_?_?_?_?".split("_"),longDateFormat:{LT:"Ah?mm",L:"YYYY-MM-DD",LL:"YYYY?MMMD?",LLL:"YYYY?MMMD?LT",LLLL:"YYYY?MMMD?ddddLT",l:"YYYY-MM-DD",ll:"YYYY?MMMD?",lll:"YYYY?MMMD?LT",llll:"YYYY?MMMD?ddddLT"},meridiem:function(a,b){var c=100*a+b;return 600>c?"??":900>c?"??":1130>c?"??":1230>c?"??":1800>c?"??":"??"},calendar:{sameDay:function(){return 0===this.minutes()?"[??]Ah[??]":"[??]LT"},nextDay:function(){return 0===this.minutes()?"[??]Ah[??]":"[??]LT"},lastDay:function(){return 0===this.minutes()?"[??]Ah[??]":"[??]LT"},nextWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()-b.unix()>=604800?"[?]":"[?]",0===this.minutes()?c+"dddAh??":c+"dddAh?mm"},lastWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()<b.unix()?"[?]":"[?]",0===this.minutes()?c+"dddAh??":c+"dddAh?mm"},sameElse:"LL"},ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"?";case"M":return a+"?";case"w":case"W":return a+"?";default:return a}},relativeTime:{future:"%s?",past:"%s?",s:"??",m:"1??",mm:"%d??",h:"1??",hh:"%d??",d:"1?",dd:"%d?",M:"1??",MM:"%d??",y:"1?",yy:"%d?"},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("zh-tw",{months:"??_??_??_??_??_??_??_??_??_??_???_???".split("_"),monthsShort:"1?_2?_3?_4?_5?_6?_7?_8?_9?_10?_11?_12?".split("_"),weekdays:"???_???_???_???_???_???_???".split("_"),weekdaysShort:"??_??_??_??_??_??_??".split("_"),weekdaysMin:"?_?_?_?_?_?_?".split("_"),longDateFormat:{LT:"Ah?mm",L:"YYYY?MMMD?",LL:"YYYY?MMMD?",LLL:"YYYY?MMMD?LT",LLLL:"YYYY?MMMD?ddddLT",l:"YYYY?MMMD?",ll:"YYYY?MMMD?",lll:"YYYY?MMMD?LT",llll:"YYYY?MMMD?ddddLT"},meridiem:function(a,b){var c=100*a+b;return 900>c?"??":1130>c?"??":1230>c?"??":1800>c?"??":"??"},calendar:{sameDay:"[??]LT",nextDay:"[??]LT",nextWeek:"[?]ddddLT",lastDay:"[??]LT",lastWeek:"[?]ddddLT",sameElse:"L"},ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"?";case"M":return a+"?";case"w":case"W":return a+"?";default:return a}},relativeTime:{future:"%s?",past:"%s?",s:"??",m:"???",mm:"%d??",h:"???",hh:"%d??",d:"??",dd:"%d?",M:"???",MM:"%d??",y:"??",yy:"%d?"}})}),db.lang("en"),rb?(module.exports=db,cb(!0)):"function"==typeof define&&define.amd?define("moment",function(b,c,d){return d.config&&d.config()&&d.config().noGlobal!==!0&&cb(d.config().noGlobal===a),db}):cb()}).call(this);(function(){function t(t){function n(t){t+="";var e=t.split(":"),n=~t.indexOf("-")?-1:1,s=Math.abs(+e[0]),r=parseInt(e[1],10)||0,i=parseInt(e[2],10)||0;return n*(60*s+r+i/60)}function s(t,e,s,r,i,u,a,o,h,f){this.name=t,this.startYear=+e,this.endYear=+s,this.month=+r,this.day=+i,this.dayRule=+u,this.time=n(a),this.timeRule=+o,this.offset=n(h),this.letters=f||""}function r(t,e){this.rule=e,this.start=e.start(t)}function i(t,e){return t.isLast?-1:e.isLast?1:e.start-t.start}function u(t){this.name=t,this.rules=[]}function a(e,s,r,i,u,a){var o,h="string"==typeof u?u.split("_"):[9999];for(this.name=e,this.offset=n(s),this.ruleSet=r,this.letters=i,o=0;h.length>o;o++)h[o]=+h[o];this.until=t.utc(h).subtract("m",n(a))}function o(t,e){return t.until-e.until}function h(t){this.name=d(t),this.displayName=t,this.zones=[]}function f(t){var e,n,s;for(e in t)for(s=t[e],n=0;s.length>n;n++)l(e+"	"+s[n])}function l(t){if(g[t])return g[t];var e=t.split(/\s/),n=d(e[0]),r=new s(n,e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10]);return g[t]=r,z(n).add(r),r}function d(t){return(t||"").toLowerCase().replace(/\//g,"_")}function c(t){var e,n,s;for(e in t)for(s=t[e],n=0;s.length>n;n++)p(e+"	"+s[n])}function m(t){var e;for(e in t)A[d(e)]=d(t[e])}function p(t){if(b[t])return b[t];var e=t.split(/\s/),n=d(e[0]),s=new a(n,e[1],z(e[2]),e[3],e[4],e[5]);return b[t]=s,y(e[0]).add(s),s}function z(t){return t=d(t),Y[t]||(Y[t]=new u(t)),Y[t]}function y(t){var e=d(t);return A[e]&&(e=A[e]),M[e]||(M[e]=new h(t)),M[e]}function v(t){t&&(t.zones&&c(t.zones),t.rules&&f(t.rules),t.links&&m(t.links))}var R,w=t.fn.zoneName,_=t.fn.zoneAbbr,g={},Y={},b={},M={},A={},k=1,L=2,N=7,q=8;return s.prototype={contains:function(t){return t>=this.startYear&&this.endYear>=t},start:function(e){return e=Math.min(Math.max(e,this.startYear),this.endYear),t.utc([e,this.month,this.date(e),0,this.time])},date:function(t){return this.dayRule===N?this.day:this.dayRule===q?this.lastWeekday(t):this.weekdayAfter(t)},weekdayAfter:function(e){for(var n=this.day,s=t([e,this.month,1]).day(),r=this.dayRule+1-s;n>r;)r+=7;return r},lastWeekday:function(e){var n=this.day,s=n%7,r=t([e,this.month+1,1]).day(),i=t([e,this.month,1]).daysInMonth(),u=i+(s-(r-1))-7*~~(n/7);return s>=r&&(u-=7),u}},r.prototype={equals:function(t){return t&&t.rule===this.rule?864e5>Math.abs(t.start-this.start):!1}},u.prototype={add:function(t){this.rules.push(t)},ruleYears:function(t,e){var n,s,u,a=t.year(),o=[];for(n=0;this.rules.length>n;n++)s=this.rules[n],s.contains(a)?o.push(new r(a,s)):s.contains(a+1)&&o.push(new r(a+1,s));return o.push(new r(a-1,this.lastYearRule(a-1))),e&&(u=new r(a-1,e.lastRule()),u.start=e.until.clone().utc(),u.isLast=e.ruleSet!==this,o.push(u)),o.sort(i),o},rule:function(t,e,n){var s,r,i,u,a,o=this.ruleYears(t,n),h=0;for(n&&(r=n.offset+n.lastRule().offset,i=9e4*Math.abs(r)),a=o.length-1;a>-1;a--)u=s,s=o[a],s.equals(u)||(n&&!s.isLast&&i>=Math.abs(s.start-n.until)&&(h+=r-e),s.rule.timeRule===L&&(h=e),s.rule.timeRule!==k&&s.start.add("m",-h),h=s.rule.offset+e);for(a=0;o.length>a;a++)if(s=o[a],t>=s.start&&!s.isLast)return s.rule;return R},lastYearRule:function(t){var e,n,s,r=R,i=-1e30;for(e=0;this.rules.length>e;e++)n=this.rules[e],t>=n.startYear&&(s=n.start(t),s>i&&(i=s,r=n));return r}},a.prototype={rule:function(t,e){return this.ruleSet.rule(t,this.offset,e)},lastRule:function(){return this._lastRule||(this._lastRule=this.rule(this.until)),this._lastRule},format:function(t){return this.letters.replace("%s",t.letters)}},h.prototype={zoneAndRule:function(t){var e,n,s;for(t=t.clone().utc(),e=0;this.zones.length>e&&(n=this.zones[e],!(n.until>t));e++)s=n;return[n,n.rule(t,s)]},add:function(t){this.zones.push(t),this.zones.sort(o)},format:function(t){var e=this.zoneAndRule(t);return e[0].format(e[1])},offset:function(t){var e=this.zoneAndRule(t);return-(e[0].offset+e[1].offset)}},t.updateOffset=function(t){var e;t._z&&(e=t._z.offset(t),16>Math.abs(e)&&(e/=60),t.zone(e))},t.fn.tz=function(e){return e?(this._z=y(e),this._z&&t.updateOffset(this),this):this._z?this._z.displayName:void 0},t.fn.zoneName=function(){return this._z?this._z.format(this):w.call(this)},t.fn.zoneAbbr=function(){return this._z?this._z.format(this):_.call(this)},t.tz=function(){var e,n=[],s=arguments.length-1;for(e=0;s>e;e++)n[e]=arguments[e];return t.apply(null,n).tz(arguments[s])},t.tz.add=v,t.tz.addRule=l,t.tz.addZone=p,t.tz.version=e,R=l("- 0 9999 0 0 0 0 0 0"),t}var e="0.0.1";"function"==typeof define&&define.amd?define("moment-timezone",["moment"],t):"undefined"!=typeof window&&window.moment?t(window.moment):"undefined"!=typeof module&&(module.exports=t(require("./moment")))}).apply(this);moment.tz.add({
    "zones": {
        "Africa/Abidjan": [
            "-0:16:8 - LMT 1912 -0:16:8",
            "0 - GMT"
        ],
        "Africa/Accra": [
            "-0:0:52 - LMT 1918 -0:0:52",
            "0 Ghana %s"
        ],
        "Africa/Addis_Ababa": [
            "2:34:48 - LMT 1870 2:34:48",
            "2:35:20 - ADMT 1936_4_5 2:35:20",
            "3 - EAT"
        ],
        "Africa/Algiers": [
            "0:12:12 - LMT 1891_2_15_0_1 0:12:12",
            "0:9:21 - PMT 1911_2_11 0:9:21",
            "0 Algeria WE%sT 1940_1_25_2",
            "1 Algeria CE%sT 1946_9_7 1",
            "0 - WET 1956_0_29",
            "1 - CET 1963_3_14 1",
            "0 Algeria WE%sT 1977_9_21 1",
            "1 Algeria CE%sT 1979_9_26 1",
            "0 Algeria WE%sT 1981_4",
            "1 - CET"
        ],
        "Africa/Asmara": [
            "2:35:32 - LMT 1870 2:35:32",
            "2:35:32 - AMT 1890 2:35:32",
            "2:35:20 - ADMT 1936_4_5 2:35:20",
            "3 - EAT"
        ],
        "Africa/Bamako": [
            "-0:32 - LMT 1912 -0:32",
            "0 - GMT 1934_1_26",
            "-1 - WAT 1960_5_20 -1",
            "0 - GMT"
        ],
        "Africa/Bangui": [
            "1:14:20 - LMT 1912 1:14:20",
            "1 - WAT"
        ],
        "Africa/Banjul": [
            "-1:6:36 - LMT 1912 -1:6:36",
            "-1:6:36 - BMT 1935 -1:6:36",
            "-1 - WAT 1964 -1",
            "0 - GMT"
        ],
        "Africa/Bissau": [
            "-1:2:20 - LMT 1911_4_26 -1:2:20",
            "-1 - WAT 1975 -1",
            "0 - GMT"
        ],
        "Africa/Blantyre": [
            "2:20 - LMT 1903_2 2:20",
            "2 - CAT"
        ],
        "Africa/Brazzaville": [
            "1:1:8 - LMT 1912 1:1:8",
            "1 - WAT"
        ],
        "Africa/Bujumbura": [
            "1:57:28 - LMT 1890 1:57:28",
            "2 - CAT"
        ],
        "Africa/Cairo": [
            "2:5:9 - LMT 1900_9 2:5:9",
            "2 Egypt EE%sT"
        ],
        "Africa/Casablanca": [
            "-0:30:20 - LMT 1913_9_26 -0:30:20",
            "0 Morocco WE%sT 1984_2_16",
            "1 - CET 1986 1",
            "0 Morocco WE%sT"
        ],
        "Africa/Ceuta": [
            "-0:21:16 - LMT 1901 -0:21:16",
            "0 - WET 1918_4_6_23",
            "1 - WEST 1918_9_7_23 1",
            "0 - WET 1924",
            "0 Spain WE%sT 1929",
            "0 SpainAfrica WE%sT 1984_2_16",
            "1 - CET 1986 1",
            "1 EU CE%sT"
        ],
        "Africa/Conakry": [
            "-0:54:52 - LMT 1912 -0:54:52",
            "0 - GMT 1934_1_26",
            "-1 - WAT 1960 -1",
            "0 - GMT"
        ],
        "Africa/Dakar": [
            "-1:9:44 - LMT 1912 -1:9:44",
            "-1 - WAT 1941_5 -1",
            "0 - GMT"
        ],
        "Africa/Dar_es_Salaam": [
            "2:37:8 - LMT 1931 2:37:8",
            "3 - EAT 1948 3",
            "2:45 - BEAUT 1961 2:45",
            "3 - EAT"
        ],
        "Africa/Djibouti": [
            "2:52:36 - LMT 1911_6 2:52:36",
            "3 - EAT"
        ],
        "Africa/Douala": [
            "0:38:48 - LMT 1912 0:38:48",
            "1 - WAT"
        ],
        "Africa/El_Aaiun": [
            "-0:52:48 - LMT 1934_0 -0:52:48",
            "-1 - WAT 1976_3_14 -1",
            "0 - WET"
        ],
        "Africa/Freetown": [
            "-0:53 - LMT 1882 -0:53",
            "-0:53 - FMT 1913_5 -0:53",
            "-1 SL %s 1957 -1",
            "0 SL %s"
        ],
        "Africa/Gaborone": [
            "1:43:40 - LMT 1885 1:43:40",
            "1:30 - SAST 1903_2 1:30",
            "2 - CAT 1943_8_19_2 2",
            "3 - CAST 1944_2_19_2 3",
            "2 - CAT"
        ],
        "Africa/Harare": [
            "2:4:12 - LMT 1903_2 2:4:12",
            "2 - CAT"
        ],
        "Africa/Johannesburg": [
            "1:52 - LMT 1892_1_8 1:52",
            "1:30 - SAST 1903_2 1:30",
            "2 SA SAST"
        ],
        "Africa/Juba": [
            "2:6:24 - LMT 1931 2:6:24",
            "2 Sudan CA%sT 2000_0_15_12 2",
            "3 - EAT"
        ],
        "Africa/Kampala": [
            "2:9:40 - LMT 1928_6 2:9:40",
            "3 - EAT 1930 3",
            "2:30 - BEAT 1948 2:30",
            "2:45 - BEAUT 1957 2:45",
            "3 - EAT"
        ],
        "Africa/Khartoum": [
            "2:10:8 - LMT 1931 2:10:8",
            "2 Sudan CA%sT 2000_0_15_12 2",
            "3 - EAT"
        ],
        "Africa/Kigali": [
            "2:0:16 - LMT 1935_5 2:0:16",
            "2 - CAT"
        ],
        "Africa/Kinshasa": [
            "1:1:12 - LMT 1897_10_9 1:1:12",
            "1 - WAT"
        ],
        "Africa/Lagos": [
            "0:13:36 - LMT 1919_8 0:13:36",
            "1 - WAT"
        ],
        "Africa/Libreville": [
            "0:37:48 - LMT 1912 0:37:48",
            "1 - WAT"
        ],
        "Africa/Lome": [
            "0:4:52 - LMT 1893 0:4:52",
            "0 - GMT"
        ],
        "Africa/Luanda": [
            "0:52:56 - LMT 1892 0:52:56",
            "0:52:4 - AOT 1911_4_26 0:52:4",
            "1 - WAT"
        ],
        "Africa/Lubumbashi": [
            "1:49:52 - LMT 1897_10_9 1:49:52",
            "2 - CAT"
        ],
        "Africa/Lusaka": [
            "1:53:8 - LMT 1903_2 1:53:8",
            "2 - CAT"
        ],
        "Africa/Malabo": [
            "0:35:8 - LMT 1912 0:35:8",
            "0 - GMT 1963_11_15",
            "1 - WAT"
        ],
        "Africa/Maputo": [
            "2:10:20 - LMT 1903_2 2:10:20",
            "2 - CAT"
        ],
        "Africa/Maseru": [
            "1:50 - LMT 1903_2 1:50",
            "2 - SAST 1943_8_19_2 2",
            "3 - SAST 1944_2_19_2 3",
            "2 - SAST"
        ],
        "Africa/Mbabane": [
            "2:4:24 - LMT 1903_2 2:4:24",
            "2 - SAST"
        ],
        "Africa/Mogadishu": [
            "3:1:28 - LMT 1893_10 3:1:28",
            "3 - EAT 1931 3",
            "2:30 - BEAT 1957 2:30",
            "3 - EAT"
        ],
        "Africa/Monrovia": [
            "-0:43:8 - LMT 1882 -0:43:8",
            "-0:43:8 - MMT 1919_2 -0:43:8",
            "-0:44:30 - LRT 1972_4 -0:44:30",
            "0 - GMT"
        ],
        "Africa/Nairobi": [
            "2:27:16 - LMT 1928_6 2:27:16",
            "3 - EAT 1930 3",
            "2:30 - BEAT 1940 2:30",
            "2:45 - BEAUT 1960 2:45",
            "3 - EAT"
        ],
        "Africa/Ndjamena": [
            "1:0:12 - LMT 1912 1:0:12",
            "1 - WAT 1979_9_14 1",
            "2 - WAST 1980_2_8 2",
            "1 - WAT"
        ],
        "Africa/Niamey": [
            "0:8:28 - LMT 1912 0:8:28",
            "-1 - WAT 1934_1_26 -1",
            "0 - GMT 1960",
            "1 - WAT"
        ],
        "Africa/Nouakchott": [
            "-1:3:48 - LMT 1912 -1:3:48",
            "0 - GMT 1934_1_26",
            "-1 - WAT 1960_10_28 -1",
            "0 - GMT"
        ],
        "Africa/Ouagadougou": [
            "-0:6:4 - LMT 1912 -0:6:4",
            "0 - GMT"
        ],
        "Africa/Porto-Novo": [
            "0:10:28 - LMT 1912 0:10:28",
            "0 - GMT 1934_1_26",
            "1 - WAT"
        ],
        "Africa/Sao_Tome": [
            "0:26:56 - LMT 1884 0:26:56",
            "-0:36:32 - LMT 1912 -0:36:32",
            "0 - GMT"
        ],
        "Africa/Tripoli": [
            "0:52:44 - LMT 1920 0:52:44",
            "1 Libya CE%sT 1959 1",
            "2 - EET 1982 2",
            "1 Libya CE%sT 1990_4_4 1",
            "2 - EET 1996_8_30 2",
            "1 Libya CE%sT 1997_9_4 2",
            "2 - EET 2012_10_10_2 2",
            "1 Libya CE%sT"
        ],
        "Africa/Tunis": [
            "0:40:44 - LMT 1881_4_12 0:40:44",
            "0:9:21 - PMT 1911_2_11 0:9:21",
            "1 Tunisia CE%sT"
        ],
        "Africa/Windhoek": [
            "1:8:24 - LMT 1892_1_8 1:8:24",
            "1:30 - SWAT 1903_2 1:30",
            "2 - SAST 1942_8_20_2 2",
            "3 - SAST 1943_2_21_2 3",
            "2 - SAST 1990_2_21 2",
            "2 - CAT 1994_3_3 2",
            "1 Namibia WA%sT"
        ],
        "America/Adak": [
            "12:13:21 - LMT 1867_9_18 12:13:21",
            "-11:46:38 - LMT 1900_7_20_12 -11:46:38",
            "-11 - NST 1942 -11",
            "-11 US N%sT 1946 -11",
            "-11 - NST 1967_3 -11",
            "-11 - BST 1969 -11",
            "-11 US B%sT 1983_9_30_2 -10",
            "-10 US AH%sT 1983_10_30 -10",
            "-10 US HA%sT"
        ],
        "America/Anchorage": [
            "14:0:24 - LMT 1867_9_18 14:0:24",
            "-9:59:36 - LMT 1900_7_20_12 -9:59:36",
            "-10 - CAT 1942 -10",
            "-10 US CAT/CAWT 1945_7_14_23",
            "-10 US CAT/CAPT 1946 -10",
            "-10 - CAT 1967_3 -10",
            "-10 - AHST 1969 -10",
            "-10 US AH%sT 1983_9_30_2 -9",
            "-9 US Y%sT 1983_10_30 -9",
            "-9 US AK%sT"
        ],
        "America/Anguilla": [
            "-4:12:16 - LMT 1912_2_2 -4:12:16",
            "-4 - AST"
        ],
        "America/Antigua": [
            "-4:7:12 - LMT 1912_2_2 -4:7:12",
            "-5 - EST 1951 -5",
            "-4 - AST"
        ],
        "America/Araguaina": [
            "-3:12:48 - LMT 1914 -3:12:48",
            "-3 Brazil BR%sT 1990_8_17 -3",
            "-3 - BRT 1995_8_14 -3",
            "-3 Brazil BR%sT 2003_8_24 -3",
            "-3 - BRT 2012_9_21 -3",
            "-3 Brazil BR%sT"
        ],
        "America/Argentina/Buenos_Aires": [
            "-3:53:48 - LMT 1894_9_31 -3:53:48",
            "-4:16:48 - CMT 1920_4 -4:16:48",
            "-4 - ART 1930_11 -4",
            "-4 Arg AR%sT 1969_9_5 -4",
            "-3 Arg AR%sT 1999_9_3 -3",
            "-4 Arg AR%sT 2000_2_3 -3",
            "-3 Arg AR%sT"
        ],
        "America/Argentina/Catamarca": [
            "-4:23:8 - LMT 1894_9_31 -4:23:8",
            "-4:16:48 - CMT 1920_4 -4:16:48",
            "-4 - ART 1930_11 -4",
            "-4 Arg AR%sT 1969_9_5 -4",
            "-3 Arg AR%sT 1991_2_3 -2",
            "-4 - WART 1991_9_20 -4",
            "-3 Arg AR%sT 1999_9_3 -3",
            "-4 Arg AR%sT 2000_2_3 -3",
            "-3 - ART 2004_5_1 -3",
            "-4 - WART 2004_5_20 -4",
            "-3 Arg AR%sT 2008_9_18 -3",
            "-3 - ART"
        ],
        "America/Argentina/Cordoba": [
            "-4:16:48 - LMT 1894_9_31 -4:16:48",
            "-4:16:48 - CMT 1920_4 -4:16:48",
            "-4 - ART 1930_11 -4",
            "-4 Arg AR%sT 1969_9_5 -4",
            "-3 Arg AR%sT 1991_2_3 -2",
            "-4 - WART 1991_9_20 -4",
            "-3 Arg AR%sT 1999_9_3 -3",
            "-4 Arg AR%sT 2000_2_3 -3",
            "-3 Arg AR%sT"
        ],
        "America/Argentina/Jujuy": [
            "-4:21:12 - LMT 1894_9_31 -4:21:12",
            "-4:16:48 - CMT 1920_4 -4:16:48",
            "-4 - ART 1930_11 -4",
            "-4 Arg AR%sT 1969_9_5 -4",
            "-3 Arg AR%sT 1990_2_4 -2",
            "-4 - WART 1990_9_28 -4",
            "-3 - WARST 1991_2_17 -3",
            "-4 - WART 1991_9_6 -4",
            "-2 - ARST 1992 -2",
            "-3 Arg AR%sT 1999_9_3 -3",
            "-4 Arg AR%sT 2000_2_3 -3",
            "-3 Arg AR%sT 2008_9_18 -3",
            "-3 - ART"
        ],
        "America/Argentina/La_Rioja": [
            "-4:27:24 - LMT 1894_9_31 -4:27:24",
            "-4:16:48 - CMT 1920_4 -4:16:48",
            "-4 - ART 1930_11 -4",
            "-4 Arg AR%sT 1969_9_5 -4",
            "-3 Arg AR%sT 1991_2_1 -2",
            "-4 - WART 1991_4_7 -4",
            "-3 Arg AR%sT 1999_9_3 -3",
            "-4 Arg AR%sT 2000_2_3 -3",
            "-3 - ART 2004_5_1 -3",
            "-4 - WART 2004_5_20 -4",
            "-3 Arg AR%sT 2008_9_18 -3",
            "-3 - ART"
        ],
        "America/Argentina/Mendoza": [
            "-4:35:16 - LMT 1894_9_31 -4:35:16",
            "-4:16:48 - CMT 1920_4 -4:16:48",
            "-4 - ART 1930_11 -4",
            "-4 Arg AR%sT 1969_9_5 -4",
            "-3 Arg AR%sT 1990_2_4 -2",
            "-4 - WART 1990_9_15 -4",
            "-3 - WARST 1991_2_1 -3",
            "-4 - WART 1991_9_15 -4",
            "-3 - WARST 1992_2_1 -3",
            "-4 - WART 1992_9_18 -4",
            "-3 Arg AR%sT 1999_9_3 -3",
            "-4 Arg AR%sT 2000_2_3 -3",
            "-3 - ART 2004_4_23 -3",
            "-4 - WART 2004_8_26 -4",
            "-3 Arg AR%sT 2008_9_18 -3",
            "-3 - ART"
        ],
        "America/Argentina/Rio_Gallegos": [
            "-4:36:52 - LMT 1894_9_31 -4:36:52",
            "-4:16:48 - CMT 1920_4 -4:16:48",
            "-4 - ART 1930_11 -4",
            "-4 Arg AR%sT 1969_9_5 -4",
            "-3 Arg AR%sT 1999_9_3 -3",
            "-4 Arg AR%sT 2000_2_3 -3",
            "-3 - ART 2004_5_1 -3",
            "-4 - WART 2004_5_20 -4",
            "-3 Arg AR%sT 2008_9_18 -3",
            "-3 - ART"
        ],
        "America/Argentina/Salta": [
            "-4:21:40 - LMT 1894_9_31 -4:21:40",
            "-4:16:48 - CMT 1920_4 -4:16:48",
            "-4 - ART 1930_11 -4",
            "-4 Arg AR%sT 1969_9_5 -4",
            "-3 Arg AR%sT 1991_2_3 -2",
            "-4 - WART 1991_9_20 -4",
            "-3 Arg AR%sT 1999_9_3 -3",
            "-4 Arg AR%sT 2000_2_3 -3",
            "-3 Arg AR%sT 2008_9_18 -3",
            "-3 - ART"
        ],
        "America/Argentina/San_Juan": [
            "-4:34:4 - LMT 1894_9_31 -4:34:4",
            "-4:16:48 - CMT 1920_4 -4:16:48",
            "-4 - ART 1930_11 -4",
            "-4 Arg AR%sT 1969_9_5 -4",
            "-3 Arg AR%sT 1991_2_1 -2",
            "-4 - WART 1991_4_7 -4",
            "-3 Arg AR%sT 1999_9_3 -3",
            "-4 Arg AR%sT 2000_2_3 -3",
            "-3 - ART 2004_4_31 -3",
            "-4 - WART 2004_6_25 -4",
            "-3 Arg AR%sT 2008_9_18 -3",
            "-3 - ART"
        ],
        "America/Argentina/San_Luis": [
            "-4:25:24 - LMT 1894_9_31 -4:25:24",
            "-4:16:48 - CMT 1920_4 -4:16:48",
            "-4 - ART 1930_11 -4",
            "-4 Arg AR%sT 1969_9_5 -4",
            "-3 Arg AR%sT 1990 -2",
            "-2 - ARST 1990_2_14 -2",
            "-4 - WART 1990_9_15 -4",
            "-3 - WARST 1991_2_1 -3",
            "-4 - WART 1991_5_1 -4",
            "-3 - ART 1999_9_3 -3",
            "-3 - WARST 2000_2_3 -3",
            "-3 - ART 2004_4_31 -3",
            "-4 - WART 2004_6_25 -4",
            "-3 Arg AR%sT 2008_0_21 -2",
            "-4 SanLuis WAR%sT"
        ],
        "America/Argentina/Tucuman": [
            "-4:20:52 - LMT 1894_9_31 -4:20:52",
            "-4:16:48 - CMT 1920_4 -4:16:48",
            "-4 - ART 1930_11 -4",
            "-4 Arg AR%sT 1969_9_5 -4",
            "-3 Arg AR%sT 1991_2_3 -2",
            "-4 - WART 1991_9_20 -4",
            "-3 Arg AR%sT 1999_9_3 -3",
            "-4 Arg AR%sT 2000_2_3 -3",
            "-3 - ART 2004_5_1 -3",
            "-4 - WART 2004_5_13 -4",
            "-3 Arg AR%sT"
        ],
        "America/Argentina/Ushuaia": [
            "-4:33:12 - LMT 1894_9_31 -4:33:12",
            "-4:16:48 - CMT 1920_4 -4:16:48",
            "-4 - ART 1930_11 -4",
            "-4 Arg AR%sT 1969_9_5 -4",
            "-3 Arg AR%sT 1999_9_3 -3",
            "-4 Arg AR%sT 2000_2_3 -3",
            "-3 - ART 2004_4_30 -3",
            "-4 - WART 2004_5_20 -4",
            "-3 Arg AR%sT 2008_9_18 -3",
            "-3 - ART"
        ],
        "America/Aruba": [
            "-4:40:24 - LMT 1912_1_12 -4:40:24",
            "-4:30 - ANT 1965 -4:30",
            "-4 - AST"
        ],
        "America/Asuncion": [
            "-3:50:40 - LMT 1890 -3:50:40",
            "-3:50:40 - AMT 1931_9_10 -3:50:40",
            "-4 - PYT 1972_9 -4",
            "-3 - PYT 1974_3 -3",
            "-4 Para PY%sT"
        ],
        "America/Atikokan": [
            "-6:6:28 - LMT 1895 -6:6:28",
            "-6 Canada C%sT 1940_8_29 -6",
            "-5 - CDT 1942_1_9_2 -6",
            "-6 Canada C%sT 1945_8_30_2 -5",
            "-5 - EST"
        ],
        "America/Bahia": [
            "-2:34:4 - LMT 1914 -2:34:4",
            "-3 Brazil BR%sT 2003_8_24 -3",
            "-3 - BRT 2011_9_16 -3",
            "-3 Brazil BR%sT 2012_9_21 -3",
            "-3 - BRT"
        ],
        "America/Bahia_Banderas": [
            "-7:1 - LMT 1921_11_31_23_59 -7:1",
            "-7 - MST 1927_5_10_23 -7",
            "-6 - CST 1930_10_15 -6",
            "-7 - MST 1931_4_1_23 -7",
            "-6 - CST 1931_9 -6",
            "-7 - MST 1932_3_1 -7",
            "-6 - CST 1942_3_24 -6",
            "-7 - MST 1949_0_14 -7",
            "-8 - PST 1970 -8",
            "-7 Mexico M%sT 2010_3_4_2 -7",
            "-6 Mexico C%sT"
        ],
        "America/Barbados": [
            "-3:58:29 - LMT 1924 -3:58:29",
            "-3:58:29 - BMT 1932 -3:58:29",
            "-4 Barb A%sT"
        ],
        "America/Belem": [
            "-3:13:56 - LMT 1914 -3:13:56",
            "-3 Brazil BR%sT 1988_8_12 -3",
            "-3 - BRT"
        ],
        "America/Belize": [
            "-5:52:48 - LMT 1912_3 -5:52:48",
            "-6 Belize C%sT"
        ],
        "America/Blanc-Sablon": [
            "-3:48:28 - LMT 1884 -3:48:28",
            "-4 Canada A%sT 1970 -4",
            "-4 - AST"
        ],
        "America/Boa_Vista": [
            "-4:2:40 - LMT 1914 -4:2:40",
            "-4 Brazil AM%sT 1988_8_12 -4",
            "-4 - AMT 1999_8_30 -4",
            "-4 Brazil AM%sT 2000_9_15 -3",
            "-4 - AMT"
        ],
        "America/Bogota": [
            "-4:56:16 - LMT 1884_2_13 -4:56:16",
            "-4:56:16 - BMT 1914_10_23 -4:56:16",
            "-5 CO CO%sT"
        ],
        "America/Boise": [
            "-7:44:49 - LMT 1883_10_18_12_15_11 -7:44:49",
            "-8 US P%sT 1923_4_13_2 -8",
            "-7 US M%sT 1974 -7",
            "-7 - MST 1974_1_3_2 -7",
            "-7 US M%sT"
        ],
        "America/Cambridge_Bay": [
            "0 - zzz 1920",
            "-7 NT_YK M%sT 1999_9_31_2 -6",
            "-6 Canada C%sT 2000_9_29_2 -5",
            "-5 - EST 2000_10_5_0 -5",
            "-6 - CST 2001_3_1_3 -6",
            "-7 Canada M%sT"
        ],
        "America/Campo_Grande": [
            "-3:38:28 - LMT 1914 -3:38:28",
            "-4 Brazil AM%sT"
        ],
        "America/Cancun": [
            "-5:47:4 - LMT 1922_0_1_0_12_56 -5:47:4",
            "-6 - CST 1981_11_23 -6",
            "-5 Mexico E%sT 1998_7_2_2 -4",
            "-6 Mexico C%sT"
        ],
        "America/Caracas": [
            "-4:27:44 - LMT 1890 -4:27:44",
            "-4:27:40 - CMT 1912_1_12 -4:27:40",
            "-4:30 - VET 1965 -4:30",
            "-4 - VET 2007_11_9_03 -4",
            "-4:30 - VET"
        ],
        "America/Cayenne": [
            "-3:29:20 - LMT 1911_6 -3:29:20",
            "-4 - GFT 1967_9 -4",
            "-3 - GFT"
        ],
        "America/Cayman": [
            "-5:25:32 - LMT 1890 -5:25:32",
            "-5:7:12 - KMT 1912_1 -5:7:12",
            "-5 - EST"
        ],
        "America/Chicago": [
            "-5:50:36 - LMT 1883_10_18_12_9_24 -5:50:36",
            "-6 US C%sT 1920 -6",
            "-6 Chicago C%sT 1936_2_1_2 -6",
            "-5 - EST 1936_10_15_2 -5",
            "-6 Chicago C%sT 1942 -6",
            "-6 US C%sT 1946 -6",
            "-6 Chicago C%sT 1967 -6",
            "-6 US C%sT"
        ],
        "America/Chihuahua": [
            "-7:4:20 - LMT 1921_11_31_23_55_40 -7:4:20",
            "-7 - MST 1927_5_10_23 -7",
            "-6 - CST 1930_10_15 -6",
            "-7 - MST 1931_4_1_23 -7",
            "-6 - CST 1931_9 -6",
            "-7 - MST 1932_3_1 -7",
            "-6 - CST 1996 -6",
            "-6 Mexico C%sT 1998 -6",
            "-6 - CST 1998_3_5_3 -6",
            "-7 Mexico M%sT"
        ],
        "America/Costa_Rica": [
            "-5:36:13 - LMT 1890 -5:36:13",
            "-5:36:13 - SJMT 1921_0_15 -5:36:13",
            "-6 CR C%sT"
        ],
        "America/Creston": [
            "-7:46:4 - LMT 1884 -7:46:4",
            "-7 - MST 1916_9_1 -7",
            "-8 - PST 1918_5_2 -8",
            "-7 - MST"
        ],
        "America/Cuiaba": [
            "-3:44:20 - LMT 1914 -3:44:20",
            "-4 Brazil AM%sT 2003_8_24 -4",
            "-4 - AMT 2004_9_1 -4",
            "-4 Brazil AM%sT"
        ],
        "America/Curacao": [
            "-4:35:47 - LMT 1912_1_12 -4:35:47",
            "-4:30 - ANT 1965 -4:30",
            "-4 - AST"
        ],
        "America/Danmarkshavn": [
            "-1:14:40 - LMT 1916_6_28 -1:14:40",
            "-3 - WGT 1980_3_6_2 -3",
            "-3 EU WG%sT 1996 -3",
            "0 - GMT"
        ],
        "America/Dawson": [
            "-9:17:40 - LMT 1900_7_20 -9:17:40",
            "-9 NT_YK Y%sT 1973_9_28_0 -9",
            "-8 NT_YK P%sT 1980 -8",
            "-8 Canada P%sT"
        ],
        "America/Dawson_Creek": [
            "-8:0:56 - LMT 1884 -8:0:56",
            "-8 Canada P%sT 1947 -8",
            "-8 Vanc P%sT 1972_7_30_2 -7",
            "-7 - MST"
        ],
        "America/Denver": [
            "-6:59:56 - LMT 1883_10_18_12_0_4 -6:59:56",
            "-7 US M%sT 1920 -7",
            "-7 Denver M%sT 1942 -7",
            "-7 US M%sT 1946 -7",
            "-7 Denver M%sT 1967 -7",
            "-7 US M%sT"
        ],
        "America/Detroit": [
            "-5:32:11 - LMT 1905 -5:32:11",
            "-6 - CST 1915_4_15_2 -6",
            "-5 - EST 1942 -5",
            "-5 US E%sT 1946 -5",
            "-5 Detroit E%sT 1973 -5",
            "-5 US E%sT 1975 -5",
            "-5 - EST 1975_3_27_2 -5",
            "-5 US E%sT"
        ],
        "America/Dominica": [
            "-4:5:36 - LMT 1911_6_1_0_1 -4:5:36",
            "-4 - AST"
        ],
        "America/Edmonton": [
            "-7:33:52 - LMT 1906_8 -7:33:52",
            "-7 Edm M%sT 1987 -7",
            "-7 Canada M%sT"
        ],
        "America/Eirunepe": [
            "-4:39:28 - LMT 1914 -4:39:28",
            "-5 Brazil AC%sT 1988_8_12 -5",
            "-5 - ACT 1993_8_28 -5",
            "-5 Brazil AC%sT 1994_8_22 -5",
            "-5 - ACT 2008_5_24_00 -5",
            "-4 - AMT"
        ],
        "America/El_Salvador": [
            "-5:56:48 - LMT 1921 -5:56:48",
            "-6 Salv C%sT"
        ],
        "America/Fortaleza": [
            "-2:34 - LMT 1914 -2:34",
            "-3 Brazil BR%sT 1990_8_17 -3",
            "-3 - BRT 1999_8_30 -3",
            "-3 Brazil BR%sT 2000_9_22 -2",
            "-3 - BRT 2001_8_13 -3",
            "-3 Brazil BR%sT 2002_9_1 -3",
            "-3 - BRT"
        ],
        "America/Glace_Bay": [
            "-3:59:48 - LMT 1902_5_15 -3:59:48",
            "-4 Canada A%sT 1953 -4",
            "-4 Halifax A%sT 1954 -4",
            "-4 - AST 1972 -4",
            "-4 Halifax A%sT 1974 -4",
            "-4 Canada A%sT"
        ],
        "America/Godthab": [
            "-3:26:56 - LMT 1916_6_28 -3:26:56",
            "-3 - WGT 1980_3_6_2 -3",
            "-3 EU WG%sT"
        ],
        "America/Goose_Bay": [
            "-4:1:40 - LMT 1884 -4:1:40",
            "-3:30:52 - NST 1918 -3:30:52",
            "-3:30:52 Canada N%sT 1919 -3:30:52",
            "-3:30:52 - NST 1935_2_30 -3:30:52",
            "-3:30 - NST 1936 -3:30",
            "-3:30 StJohns N%sT 1942_4_11 -3:30",
            "-3:30 Canada N%sT 1946 -3:30",
            "-3:30 StJohns N%sT 1966_2_15_2 -3:30",
            "-4 StJohns A%sT 2011_10 -3",
            "-4 Canada A%sT"
        ],
        "America/Grand_Turk": [
            "-4:44:32 - LMT 1890 -4:44:32",
            "-5:7:12 - KMT 1912_1 -5:7:12",
            "-5 TC E%sT"
        ],
        "America/Grenada": [
            "-4:7 - LMT 1911_6 -4:7",
            "-4 - AST"
        ],
        "America/Guadeloupe": [
            "-4:6:8 - LMT 1911_5_8 -4:6:8",
            "-4 - AST"
        ],
        "America/Guatemala": [
            "-6:2:4 - LMT 1918_9_5 -6:2:4",
            "-6 Guat C%sT"
        ],
        "America/Guayaquil": [
            "-5:19:20 - LMT 1890 -5:19:20",
            "-5:14 - QMT 1931 -5:14",
            "-5 - ECT"
        ],
        "America/Guyana": [
            "-3:52:40 - LMT 1915_2 -3:52:40",
            "-3:45 - GBGT 1966_4_26 -3:45",
            "-3:45 - GYT 1975_6_31 -3:45",
            "-3 - GYT 1991 -3",
            "-4 - GYT"
        ],
        "America/Halifax": [
            "-4:14:24 - LMT 1902_5_15 -4:14:24",
            "-4 Halifax A%sT 1918 -4",
            "-4 Canada A%sT 1919 -4",
            "-4 Halifax A%sT 1942_1_9_2 -4",
            "-4 Canada A%sT 1946 -4",
            "-4 Halifax A%sT 1974 -4",
            "-4 Canada A%sT"
        ],
        "America/Havana": [
            "-5:29:28 - LMT 1890 -5:29:28",
            "-5:29:36 - HMT 1925_6_19_12 -5:29:36",
            "-5 Cuba C%sT"
        ],
        "America/Hermosillo": [
            "-7:23:52 - LMT 1921_11_31_23_36_8 -7:23:52",
            "-7 - MST 1927_5_10_23 -7",
            "-6 - CST 1930_10_15 -6",
            "-7 - MST 1931_4_1_23 -7",
            "-6 - CST 1931_9 -6",
            "-7 - MST 1932_3_1 -7",
            "-6 - CST 1942_3_24 -6",
            "-7 - MST 1949_0_14 -7",
            "-8 - PST 1970 -8",
            "-7 Mexico M%sT 1999 -7",
            "-7 - MST"
        ],
        "America/Indiana/Indianapolis": [
            "-5:44:38 - LMT 1883_10_18_12_15_22 -5:44:38",
            "-6 US C%sT 1920 -6",
            "-6 Indianapolis C%sT 1942 -6",
            "-6 US C%sT 1946 -6",
            "-6 Indianapolis C%sT 1955_3_24_2 -6",
            "-5 - EST 1957_8_29_2 -5",
            "-6 - CST 1958_3_27_2 -6",
            "-5 - EST 1969 -5",
            "-5 US E%sT 1971 -5",
            "-5 - EST 2006 -5",
            "-5 US E%sT"
        ],
        "America/Indiana/Knox": [
            "-5:46:30 - LMT 1883_10_18_12_13_30 -5:46:30",
            "-6 US C%sT 1947 -6",
            "-6 Starke C%sT 1962_3_29_2 -6",
            "-5 - EST 1963_9_27_2 -5",
            "-6 US C%sT 1991_9_27_2 -5",
            "-5 - EST 2006_3_2_2 -5",
            "-6 US C%sT"
        ],
        "America/Indiana/Marengo": [
            "-5:45:23 - LMT 1883_10_18_12_14_37 -5:45:23",
            "-6 US C%sT 1951 -6",
            "-6 Marengo C%sT 1961_3_30_2 -6",
            "-5 - EST 1969 -5",
            "-5 US E%sT 1974_0_6_2 -5",
            "-5 - CDT 1974_9_27_2 -5",
            "-5 US E%sT 1976 -5",
            "-5 - EST 2006 -5",
            "-5 US E%sT"
        ],
        "America/Indiana/Petersburg": [
            "-5:49:7 - LMT 1883_10_18_12_10_53 -5:49:7",
            "-6 US C%sT 1955 -6",
            "-6 Pike C%sT 1965_3_25_2 -6",
            "-5 - EST 1966_9_30_2 -5",
            "-6 US C%sT 1977_9_30_2 -5",
            "-5 - EST 2006_3_2_2 -5",
            "-6 US C%sT 2007_10_4_2 -5",
            "-5 US E%sT"
        ],
        "America/Indiana/Tell_City": [
            "-5:47:3 - LMT 1883_10_18_12_12_57 -5:47:3",
            "-6 US C%sT 1946 -6",
            "-6 Perry C%sT 1964_3_26_2 -6",
            "-5 - EST 1969 -5",
            "-5 US E%sT 1971 -5",
            "-5 - EST 2006_3_2_2 -5",
            "-6 US C%sT"
        ],
        "America/Indiana/Vevay": [
            "-5:40:16 - LMT 1883_10_18_12_19_44 -5:40:16",
            "-6 US C%sT 1954_3_25_2 -6",
            "-5 - EST 1969 -5",
            "-5 US E%sT 1973 -5",
            "-5 - EST 2006 -5",
            "-5 US E%sT"
        ],
        "America/Indiana/Vincennes": [
            "-5:50:7 - LMT 1883_10_18_12_9_53 -5:50:7",
            "-6 US C%sT 1946 -6",
            "-6 Vincennes C%sT 1964_3_26_2 -6",
            "-5 - EST 1969 -5",
            "-5 US E%sT 1971 -5",
            "-5 - EST 2006_3_2_2 -5",
            "-6 US C%sT 2007_10_4_2 -5",
            "-5 US E%sT"
        ],
        "America/Indiana/Winamac": [
            "-5:46:25 - LMT 1883_10_18_12_13_35 -5:46:25",
            "-6 US C%sT 1946 -6",
            "-6 Pulaski C%sT 1961_3_30_2 -6",
            "-5 - EST 1969 -5",
            "-5 US E%sT 1971 -5",
            "-5 - EST 2006_3_2_2 -5",
            "-6 US C%sT 2007_2_11_2 -6",
            "-5 US E%sT"
        ],
        "America/Inuvik": [
            "0 - zzz 1953",
            "-8 NT_YK P%sT 1979_3_29_2 -8",
            "-7 NT_YK M%sT 1980 -7",
            "-7 Canada M%sT"
        ],
        "America/Iqaluit": [
            "0 - zzz 1942_7",
            "-5 NT_YK E%sT 1999_9_31_2 -4",
            "-6 Canada C%sT 2000_9_29_2 -5",
            "-5 Canada E%sT"
        ],
        "America/Jamaica": [
            "-5:7:12 - LMT 1890 -5:7:12",
            "-5:7:12 - KMT 1912_1 -5:7:12",
            "-5 - EST 1974_3_28_2 -5",
            "-5 US E%sT 1984 -5",
            "-5 - EST"
        ],
        "America/Juneau": [
            "15:2:19 - LMT 1867_9_18 15:2:19",
            "-8:57:41 - LMT 1900_7_20_12 -8:57:41",
            "-8 - PST 1942 -8",
            "-8 US P%sT 1946 -8",
            "-8 - PST 1969 -8",
            "-8 US P%sT 1980_3_27_2 -8",
            "-9 US Y%sT 1980_9_26_2 -8",
            "-8 US P%sT 1983_9_30_2 -7",
            "-9 US Y%sT 1983_10_30 -9",
            "-9 US AK%sT"
        ],
        "America/Kentucky/Louisville": [
            "-5:43:2 - LMT 1883_10_18_12_16_58 -5:43:2",
            "-6 US C%sT 1921 -6",
            "-6 Louisville C%sT 1942 -6",
            "-6 US C%sT 1946 -6",
            "-6 Louisville C%sT 1961_6_23_2 -5",
            "-5 - EST 1968 -5",
            "-5 US E%sT 1974_0_6_2 -5",
            "-5 - CDT 1974_9_27_2 -5",
            "-5 US E%sT"
        ],
        "America/Kentucky/Monticello": [
            "-5:39:24 - LMT 1883_10_18_12_20_36 -5:39:24",
            "-6 US C%sT 1946 -6",
            "-6 - CST 1968 -6",
            "-6 US C%sT 2000_9_29_2 -5",
            "-5 US E%sT"
        ],
        "America/La_Paz": [
            "-4:32:36 - LMT 1890 -4:32:36",
            "-4:32:36 - CMT 1931_9_15 -4:32:36",
            "-3:32:36 - BOST 1932_2_21 -3:32:36",
            "-4 - BOT"
        ],
        "America/Lima": [
            "-5:8:12 - LMT 1890 -5:8:12",
            "-5:8:36 - LMT 1908_6_28 -5:8:36",
            "-5 Peru PE%sT"
        ],
        "America/Los_Angeles": [
            "-7:52:58 - LMT 1883_10_18_12_7_2 -7:52:58",
            "-8 US P%sT 1946 -8",
            "-8 CA P%sT 1967 -8",
            "-8 US P%sT"
        ],
        "America/Maceio": [
            "-2:22:52 - LMT 1914 -2:22:52",
            "-3 Brazil BR%sT 1990_8_17 -3",
            "-3 - BRT 1995_9_13 -3",
            "-3 Brazil BR%sT 1996_8_4 -3",
            "-3 - BRT 1999_8_30 -3",
            "-3 Brazil BR%sT 2000_9_22 -2",
            "-3 - BRT 2001_8_13 -3",
            "-3 Brazil BR%sT 2002_9_1 -3",
            "-3 - BRT"
        ],
        "America/Managua": [
            "-5:45:8 - LMT 1890 -5:45:8",
            "-5:45:12 - MMT 1934_5_23 -5:45:12",
            "-6 - CST 1973_4 -6",
            "-5 - EST 1975_1_16 -5",
            "-6 Nic C%sT 1992_0_1_4 -6",
            "-5 - EST 1992_8_24 -5",
            "-6 - CST 1993 -6",
            "-5 - EST 1997 -5",
            "-6 Nic C%sT"
        ],
        "America/Manaus": [
            "-4:0:4 - LMT 1914 -4:0:4",
            "-4 Brazil AM%sT 1988_8_12 -4",
            "-4 - AMT 1993_8_28 -4",
            "-4 Brazil AM%sT 1994_8_22 -4",
            "-4 - AMT"
        ],
        "America/Martinique": [
            "-4:4:20 - LMT 1890 -4:4:20",
            "-4:4:20 - FFMT 1911_4 -4:4:20",
            "-4 - AST 1980_3_6 -4",
            "-3 - ADT 1980_8_28 -3",
            "-4 - AST"
        ],
        "America/Matamoros": [
            "-6:40 - LMT 1921_11_31_23_20 -6:40",
            "-6 - CST 1988 -6",
            "-6 US C%sT 1989 -6",
            "-6 Mexico C%sT 2010 -6",
            "-6 US C%sT"
        ],
        "America/Mazatlan": [
            "-7:5:40 - LMT 1921_11_31_23_54_20 -7:5:40",
            "-7 - MST 1927_5_10_23 -7",
            "-6 - CST 1930_10_15 -6",
            "-7 - MST 1931_4_1_23 -7",
            "-6 - CST 1931_9 -6",
            "-7 - MST 1932_3_1 -7",
            "-6 - CST 1942_3_24 -6",
            "-7 - MST 1949_0_14 -7",
            "-8 - PST 1970 -8",
            "-7 Mexico M%sT"
        ],
        "America/Menominee": [
            "-5:50:27 - LMT 1885_8_18_12 -5:50:27",
            "-6 US C%sT 1946 -6",
            "-6 Menominee C%sT 1969_3_27_2 -6",
            "-5 - EST 1973_3_29_2 -5",
            "-6 US C%sT"
        ],
        "America/Merida": [
            "-5:58:28 - LMT 1922_0_1_0_1_32 -5:58:28",
            "-6 - CST 1981_11_23 -6",
            "-5 - EST 1982_11_2 -5",
            "-6 Mexico C%sT"
        ],
        "America/Metlakatla": [
            "15:13:42 - LMT 1867_9_18 15:13:42",
            "-8:46:18 - LMT 1900_7_20_12 -8:46:18",
            "-8 - PST 1942 -8",
            "-8 US P%sT 1946 -8",
            "-8 - PST 1969 -8",
            "-8 US P%sT 1983_9_30_2 -7",
            "-8 - MeST"
        ],
        "America/Mexico_City": [
            "-6:36:36 - LMT 1922_0_1_0_23_24 -6:36:36",
            "-7 - MST 1927_5_10_23 -7",
            "-6 - CST 1930_10_15 -6",
            "-7 - MST 1931_4_1_23 -7",
            "-6 - CST 1931_9 -6",
            "-7 - MST 1932_3_1 -7",
            "-6 Mexico C%sT 2001_8_30_02 -5",
            "-6 - CST 2002_1_20 -6",
            "-6 Mexico C%sT"
        ],
        "America/Miquelon": [
            "-3:44:40 - LMT 1911_4_15 -3:44:40",
            "-4 - AST 1980_4 -4",
            "-3 - PMST 1987 -3",
            "-3 Canada PM%sT"
        ],
        "America/Moncton": [
            "-4:19:8 - LMT 1883_11_9 -4:19:8",
            "-5 - EST 1902_5_15 -5",
            "-4 Canada A%sT 1933 -4",
            "-4 Moncton A%sT 1942 -4",
            "-4 Canada A%sT 1946 -4",
            "-4 Moncton A%sT 1973 -4",
            "-4 Canada A%sT 1993 -4",
            "-4 Moncton A%sT 2007 -4",
            "-4 Canada A%sT"
        ],
        "America/Monterrey": [
            "-6:41:16 - LMT 1921_11_31_23_18_44 -6:41:16",
            "-6 - CST 1988 -6",
            "-6 US C%sT 1989 -6",
            "-6 Mexico C%sT"
        ],
        "America/Montevideo": [
            "-3:44:44 - LMT 1898_5_28 -3:44:44",
            "-3:44:44 - MMT 1920_4_1 -3:44:44",
            "-3:30 Uruguay UY%sT 1942_11_14 -3:30",
            "-3 Uruguay UY%sT"
        ],
        "America/Montreal": [
            "-4:54:16 - LMT 1884 -4:54:16",
            "-5 Mont E%sT 1918 -5",
            "-5 Canada E%sT 1919 -5",
            "-5 Mont E%sT 1942_1_9_2 -5",
            "-5 Canada E%sT 1946 -5",
            "-5 Mont E%sT 1974 -5",
            "-5 Canada E%sT"
        ],
        "America/Montserrat": [
            "-4:8:52 - LMT 1911_6_1_0_1 -4:8:52",
            "-4 - AST"
        ],
        "America/Nassau": [
            "-5:9:30 - LMT 1912_2_2 -5:9:30",
            "-5 Bahamas E%sT 1976 -5",
            "-5 US E%sT"
        ],
        "America/New_York": [
            "-4:56:2 - LMT 1883_10_18_12_3_58 -4:56:2",
            "-5 US E%sT 1920 -5",
            "-5 NYC E%sT 1942 -5",
            "-5 US E%sT 1946 -5",
            "-5 NYC E%sT 1967 -5",
            "-5 US E%sT"
        ],
        "America/Nipigon": [
            "-5:53:4 - LMT 1895 -5:53:4",
            "-5 Canada E%sT 1940_8_29 -5",
            "-4 - EDT 1942_1_9_2 -5",
            "-5 Canada E%sT"
        ],
        "America/Nome": [
            "12:58:21 - LMT 1867_9_18 12:58:21",
            "-11:1:38 - LMT 1900_7_20_12 -11:1:38",
            "-11 - NST 1942 -11",
            "-11 US N%sT 1946 -11",
            "-11 - NST 1967_3 -11",
            "-11 - BST 1969 -11",
            "-11 US B%sT 1983_9_30_2 -10",
            "-9 US Y%sT 1983_10_30 -9",
            "-9 US AK%sT"
        ],
        "America/Noronha": [
            "-2:9:40 - LMT 1914 -2:9:40",
            "-2 Brazil FN%sT 1990_8_17 -2",
            "-2 - FNT 1999_8_30 -2",
            "-2 Brazil FN%sT 2000_9_15 -1",
            "-2 - FNT 2001_8_13 -2",
            "-2 Brazil FN%sT 2002_9_1 -2",
            "-2 - FNT"
        ],
        "America/North_Dakota/Beulah": [
            "-6:47:7 - LMT 1883_10_18_12_12_53 -6:47:7",
            "-7 US M%sT 2010_10_7_2 -6",
            "-6 US C%sT"
        ],
        "America/North_Dakota/Center": [
            "-6:45:12 - LMT 1883_10_18_12_14_48 -6:45:12",
            "-7 US M%sT 1992_9_25_02 -6",
            "-6 US C%sT"
        ],
        "America/North_Dakota/New_Salem": [
            "-6:45:39 - LMT 1883_10_18_12_14_21 -6:45:39",
            "-7 US M%sT 2003_9_26_02 -6",
            "-6 US C%sT"
        ],
        "America/Ojinaga": [
            "-6:57:40 - LMT 1922_0_1_0_2_20 -6:57:40",
            "-7 - MST 1927_5_10_23 -7",
            "-6 - CST 1930_10_15 -6",
            "-7 - MST 1931_4_1_23 -7",
            "-6 - CST 1931_9 -6",
            "-7 - MST 1932_3_1 -7",
            "-6 - CST 1996 -6",
            "-6 Mexico C%sT 1998 -6",
            "-6 - CST 1998_3_5_3 -6",
            "-7 Mexico M%sT 2010 -7",
            "-7 US M%sT"
        ],
        "America/Panama": [
            "-5:18:8 - LMT 1890 -5:18:8",
            "-5:19:36 - CMT 1908_3_22 -5:19:36",
            "-5 - EST"
        ],
        "America/Pangnirtung": [
            "0 - zzz 1921",
            "-4 NT_YK A%sT 1995_3_2_2 -4",
            "-5 Canada E%sT 1999_9_31_2 -4",
            "-6 Canada C%sT 2000_9_29_2 -5",
            "-5 Canada E%sT"
        ],
        "America/Paramaribo": [
            "-3:40:40 - LMT 1911 -3:40:40",
            "-3:40:52 - PMT 1935 -3:40:52",
            "-3:40:36 - PMT 1945_9 -3:40:36",
            "-3:30 - NEGT 1975_10_20 -3:30",
            "-3:30 - SRT 1984_9 -3:30",
            "-3 - SRT"
        ],
        "America/Phoenix": [
            "-7:28:18 - LMT 1883_10_18_11_31_42 -7:28:18",
            "-7 US M%sT 1944_0_1_00_1 -6",
            "-7 - MST 1944_3_1_00_1 -7",
            "-7 US M%sT 1944_9_1_00_1 -6",
            "-7 - MST 1967 -7",
            "-7 US M%sT 1968_2_21 -7",
            "-7 - MST"
        ],
        "America/Port-au-Prince": [
            "-4:49:20 - LMT 1890 -4:49:20",
            "-4:49 - PPMT 1917_0_24_12 -4:49",
            "-5 Haiti E%sT"
        ],
        "America/Port_of_Spain": [
            "-4:6:4 - LMT 1912_2_2 -4:6:4",
            "-4 - AST"
        ],
        "America/Porto_Velho": [
            "-4:15:36 - LMT 1914 -4:15:36",
            "-4 Brazil AM%sT 1988_8_12 -4",
            "-4 - AMT"
        ],
        "America/Puerto_Rico": [
            "-4:24:25 - LMT 1899_2_28_12 -4:24:25",
            "-4 - AST 1942_4_3 -4",
            "-4 US A%sT 1946 -4",
            "-4 - AST"
        ],
        "America/Rainy_River": [
            "-6:18:16 - LMT 1895 -6:18:16",
            "-6 Canada C%sT 1940_8_29 -6",
            "-5 - CDT 1942_1_9_2 -6",
            "-6 Canada C%sT"
        ],
        "America/Rankin_Inlet": [
            "0 - zzz 1957",
            "-6 NT_YK C%sT 2000_9_29_2 -5",
            "-5 - EST 2001_3_1_3 -5",
            "-6 Canada C%sT"
        ],
        "America/Recife": [
            "-2:19:36 - LMT 1914 -2:19:36",
            "-3 Brazil BR%sT 1990_8_17 -3",
            "-3 - BRT 1999_8_30 -3",
            "-3 Brazil BR%sT 2000_9_15 -2",
            "-3 - BRT 2001_8_13 -3",
            "-3 Brazil BR%sT 2002_9_1 -3",
            "-3 - BRT"
        ],
        "America/Regina": [
            "-6:58:36 - LMT 1905_8 -6:58:36",
            "-7 Regina M%sT 1960_3_24_2 -7",
            "-6 - CST"
        ],
        "America/Resolute": [
            "0 - zzz 1947_7_31",
            "-6 NT_YK C%sT 2000_9_29_2 -5",
            "-5 - EST 2001_3_1_3 -5",
            "-6 Canada C%sT 2006_9_29_2 -5",
            "-5 - EST 2007_2_11_3 -5",
            "-6 Canada C%sT"
        ],
        "America/Rio_Branco": [
            "-4:31:12 - LMT 1914 -4:31:12",
            "-5 Brazil AC%sT 1988_8_12 -5",
            "-5 - ACT 2008_5_24_00 -5",
            "-4 - AMT"
        ],
        "America/Santa_Isabel": [
            "-7:39:28 - LMT 1922_0_1_0_20_32 -7:39:28",
            "-7 - MST 1924 -7",
            "-8 - PST 1927_5_10_23 -8",
            "-7 - MST 1930_10_15 -7",
            "-8 - PST 1931_3_1 -8",
            "-7 - PDT 1931_8_30 -7",
            "-8 - PST 1942_3_24 -8",
            "-7 - PWT 1945_7_14_23",
            "-7 - PPT 1945_10_12 -7",
            "-8 - PST 1948_3_5 -8",
            "-7 - PDT 1949_0_14 -7",
            "-8 - PST 1954 -8",
            "-8 CA P%sT 1961 -8",
            "-8 - PST 1976 -8",
            "-8 US P%sT 1996 -8",
            "-8 Mexico P%sT 2001 -8",
            "-8 US P%sT 2002_1_20 -8",
            "-8 Mexico P%sT"
        ],
        "America/Santarem": [
            "-3:38:48 - LMT 1914 -3:38:48",
            "-4 Brazil AM%sT 1988_8_12 -4",
            "-4 - AMT 2008_5_24_00 -4",
            "-3 - BRT"
        ],
        "America/Santiago": [
            "-4:42:46 - LMT 1890 -4:42:46",
            "-4:42:46 - SMT 1910 -4:42:46",
            "-5 - CLT 1916_6_1 -5",
            "-4:42:46 - SMT 1918_8_1 -4:42:46",
            "-4 - CLT 1919_6_1 -4",
            "-4:42:46 - SMT 1927_8_1 -4:42:46",
            "-5 Chile CL%sT 1947_4_22 -5",
            "-4 Chile CL%sT"
        ],
        "America/Santo_Domingo": [
            "-4:39:36 - LMT 1890 -4:39:36",
            "-4:40 - SDMT 1933_3_1_12 -4:40",
            "-5 DR E%sT 1974_9_27 -5",
            "-4 - AST 2000_9_29_02 -4",
            "-5 US E%sT 2000_11_3_01 -5",
            "-4 - AST"
        ],
        "America/Sao_Paulo": [
            "-3:6:28 - LMT 1914 -3:6:28",
            "-3 Brazil BR%sT 1963_9_23_00 -3",
            "-2 - BRST 1964 -2",
            "-3 Brazil BR%sT"
        ],
        "America/Scoresbysund": [
            "-1:27:52 - LMT 1916_6_28 -1:27:52",
            "-2 - CGT 1980_3_6_2 -2",
            "-2 C-Eur CG%sT 1981_2_29 -2",
            "-1 EU EG%sT"
        ],
        "America/Sitka": [
            "14:58:47 - LMT 1867_9_18 14:58:47",
            "-9:1:13 - LMT 1900_7_20_12 -9:1:13",
            "-8 - PST 1942 -8",
            "-8 US P%sT 1946 -8",
            "-8 - PST 1969 -8",
            "-8 US P%sT 1983_9_30_2 -7",
            "-9 US Y%sT 1983_10_30 -9",
            "-9 US AK%sT"
        ],
        "America/St_Johns": [
            "-3:30:52 - LMT 1884 -3:30:52",
            "-3:30:52 StJohns N%sT 1918 -3:30:52",
            "-3:30:52 Canada N%sT 1919 -3:30:52",
            "-3:30:52 StJohns N%sT 1935_2_30 -3:30:52",
            "-3:30 StJohns N%sT 1942_4_11 -3:30",
            "-3:30 Canada N%sT 1946 -3:30",
            "-3:30 StJohns N%sT 2011_10 -2:30",
            "-3:30 Canada N%sT"
        ],
        "America/St_Kitts": [
            "-4:10:52 - LMT 1912_2_2 -4:10:52",
            "-4 - AST"
        ],
        "America/St_Lucia": [
            "-4:4 - LMT 1890 -4:4",
            "-4:4 - CMT 1912 -4:4",
            "-4 - AST"
        ],
        "America/St_Thomas": [
            "-4:19:44 - LMT 1911_6 -4:19:44",
            "-4 - AST"
        ],
        "America/St_Vincent": [
            "-4:4:56 - LMT 1890 -4:4:56",
            "-4:4:56 - KMT 1912 -4:4:56",
            "-4 - AST"
        ],
        "America/Swift_Current": [
            "-7:11:20 - LMT 1905_8 -7:11:20",
            "-7 Canada M%sT 1946_3_28_2 -7",
            "-7 Regina M%sT 1950 -7",
            "-7 Swift M%sT 1972_3_30_2 -7",
            "-6 - CST"
        ],
        "America/Tegucigalpa": [
            "-5:48:52 - LMT 1921_3 -5:48:52",
            "-6 Hond C%sT"
        ],
        "America/Thule": [
            "-4:35:8 - LMT 1916_6_28 -4:35:8",
            "-4 Thule A%sT"
        ],
        "America/Thunder_Bay": [
            "-5:57 - LMT 1895 -5:57",
            "-6 - CST 1910 -6",
            "-5 - EST 1942 -5",
            "-5 Canada E%sT 1970 -5",
            "-5 Mont E%sT 1973 -5",
            "-5 - EST 1974 -5",
            "-5 Canada E%sT"
        ],
        "America/Tijuana": [
            "-7:48:4 - LMT 1922_0_1_0_11_56 -7:48:4",
            "-7 - MST 1924 -7",
            "-8 - PST 1927_5_10_23 -8",
            "-7 - MST 1930_10_15 -7",
            "-8 - PST 1931_3_1 -8",
            "-7 - PDT 1931_8_30 -7",
            "-8 - PST 1942_3_24 -8",
            "-7 - PWT 1945_7_14_23",
            "-7 - PPT 1945_10_12 -7",
            "-8 - PST 1948_3_5 -8",
            "-7 - PDT 1949_0_14 -7",
            "-8 - PST 1954 -8",
            "-8 CA P%sT 1961 -8",
            "-8 - PST 1976 -8",
            "-8 US P%sT 1996 -8",
            "-8 Mexico P%sT 2001 -8",
            "-8 US P%sT 2002_1_20 -8",
            "-8 Mexico P%sT 2010 -8",
            "-8 US P%sT"
        ],
        "America/Toronto": [
            "-5:17:32 - LMT 1895 -5:17:32",
            "-5 Canada E%sT 1919 -5",
            "-5 Toronto E%sT 1942_1_9_2 -5",
            "-5 Canada E%sT 1946 -5",
            "-5 Toronto E%sT 1974 -5",
            "-5 Canada E%sT"
        ],
        "America/Tortola": [
            "-4:18:28 - LMT 1911_6 -4:18:28",
            "-4 - AST"
        ],
        "America/Vancouver": [
            "-8:12:28 - LMT 1884 -8:12:28",
            "-8 Vanc P%sT 1987 -8",
            "-8 Canada P%sT"
        ],
        "America/Whitehorse": [
            "-9:0:12 - LMT 1900_7_20 -9:0:12",
            "-9 NT_YK Y%sT 1966_6_1_2 -9",
            "-8 NT_YK P%sT 1980 -8",
            "-8 Canada P%sT"
        ],
        "America/Winnipeg": [
            "-6:28:36 - LMT 1887_6_16 -6:28:36",
            "-6 Winn C%sT 2006 -6",
            "-6 Canada C%sT"
        ],
        "America/Yakutat": [
            "14:41:5 - LMT 1867_9_18 14:41:5",
            "-9:18:55 - LMT 1900_7_20_12 -9:18:55",
            "-9 - YST 1942 -9",
            "-9 US Y%sT 1946 -9",
            "-9 - YST 1969 -9",
            "-9 US Y%sT 1983_10_30 -9",
            "-9 US AK%sT"
        ],
        "America/Yellowknife": [
            "0 - zzz 1935",
            "-7 NT_YK M%sT 1980 -7",
            "-7 Canada M%sT"
        ],
        "Antarctica/Casey": [
            "0 - zzz 1969",
            "8 - WST 2009_9_18_2 8",
            "11 - CAST 2010_2_5_2 11",
            "8 - WST 2011_9_28_2 8",
            "11 - CAST 2012_1_21_17",
            "8 - WST"
        ],
        "Antarctica/Davis": [
            "0 - zzz 1957_0_13",
            "7 - DAVT 1964_10 7",
            "0 - zzz 1969_1",
            "7 - DAVT 2009_9_18_2 7",
            "5 - DAVT 2010_2_10_20",
            "7 - DAVT 2011_9_28_2 7",
            "5 - DAVT 2012_1_21_20",
            "7 - DAVT"
        ],
        "Antarctica/DumontDUrville": [
            "0 - zzz 1947",
            "10 - PMT 1952_0_14 10",
            "0 - zzz 1956_10",
            "10 - DDUT"
        ],
        "Antarctica/Macquarie": [
            "0 - zzz 1899_10",
            "10 - EST 1916_9_1_2 10",
            "11 - EST 1917_1 11",
            "10 Aus EST 1919_3 10",
            "0 - zzz 1948_2_25",
            "10 Aus EST 1967 10",
            "10 AT EST 2010_3_4_3 11",
            "11 - MIST"
        ],
        "Antarctica/Mawson": [
            "0 - zzz 1954_1_13",
            "6 - MAWT 2009_9_18_2 6",
            "5 - MAWT"
        ],
        "Antarctica/McMurdo": [
            "0 - zzz 1956",
            "12 NZAQ NZ%sT"
        ],
        "Antarctica/Palmer": [
            "0 - zzz 1965",
            "-4 ArgAQ AR%sT 1969_9_5 -4",
            "-3 ArgAQ AR%sT 1982_4 -3",
            "-4 ChileAQ CL%sT"
        ],
        "Antarctica/Rothera": [
            "0 - zzz 1976_11_1",
            "-3 - ROTT"
        ],
        "Antarctica/Syowa": [
            "0 - zzz 1957_0_29",
            "3 - SYOT"
        ],
        "Antarctica/Vostok": [
            "0 - zzz 1957_11_16",
            "6 - VOST"
        ],
        "Europe/Oslo": [
            "0:43 - LMT 1895_0_1 0:43",
            "1 Norway CE%sT 1940_7_10_23 1",
            "1 C-Eur CE%sT 1945_3_2_2 1",
            "1 Norway CE%sT 1980 1",
            "1 EU CE%sT"
        ],
        "Asia/Aden": [
            "2:59:54 - LMT 1950 2:59:54",
            "3 - AST"
        ],
        "Asia/Almaty": [
            "5:7:48 - LMT 1924_4_2 5:7:48",
            "5 - ALMT 1930_5_21 5",
            "6 RussiaAsia ALM%sT 1991 6",
            "6 - ALMT 1992 6",
            "6 RussiaAsia ALM%sT 2005_2_15 6",
            "6 - ALMT"
        ],
        "Asia/Amman": [
            "2:23:44 - LMT 1931 2:23:44",
            "2 Jordan EE%sT"
        ],
        "Asia/Anadyr": [
            "11:49:56 - LMT 1924_4_2 11:49:56",
            "12 - ANAT 1930_5_21 12",
            "13 Russia ANA%sT 1982_3_1_0 13",
            "12 Russia ANA%sT 1991_2_31_2 12",
            "11 Russia ANA%sT 1992_0_19_2 11",
            "12 Russia ANA%sT 2010_2_28_2 12",
            "11 Russia ANA%sT 2011_2_27_2 11",
            "12 - ANAT"
        ],
        "Asia/Aqtau": [
            "3:21:4 - LMT 1924_4_2 3:21:4",
            "4 - FORT 1930_5_21 4",
            "5 - FORT 1963 5",
            "5 - SHET 1981_9_1 5",
            "6 - SHET 1982_3_1 6",
            "5 RussiaAsia SHE%sT 1991 5",
            "5 - SHET 1991_11_16 5",
            "5 RussiaAsia AQT%sT 1995_2_26_2 5",
            "4 RussiaAsia AQT%sT 2005_2_15 4",
            "5 - AQTT"
        ],
        "Asia/Aqtobe": [
            "3:48:40 - LMT 1924_4_2 3:48:40",
            "4 - AKTT 1930_5_21 4",
            "5 - AKTT 1981_3_1 5",
            "6 - AKTST 1981_9_1 6",
            "6 - AKTT 1982_3_1 6",
            "5 RussiaAsia AKT%sT 1991 5",
            "5 - AKTT 1991_11_16 5",
            "5 RussiaAsia AQT%sT 2005_2_15 5",
            "5 - AQTT"
        ],
        "Asia/Ashgabat": [
            "3:53:32 - LMT 1924_4_2 3:53:32",
            "4 - ASHT 1930_5_21 4",
            "5 RussiaAsia ASH%sT 1991_2_31_2 5",
            "4 RussiaAsia ASH%sT 1991_9_27 4",
            "4 RussiaAsia TM%sT 1992_0_19_2 4",
            "5 - TMT"
        ],
        "Asia/Baghdad": [
            "2:57:40 - LMT 1890 2:57:40",
            "2:57:36 - BMT 1918 2:57:36",
            "3 - AST 1982_4 3",
            "3 Iraq A%sT"
        ],
        "Asia/Bahrain": [
            "3:22:20 - LMT 1920 3:22:20",
            "4 - GST 1972_5 4",
            "3 - AST"
        ],
        "Asia/Baku": [
            "3:19:24 - LMT 1924_4_2 3:19:24",
            "3 - BAKT 1957_2 3",
            "4 RussiaAsia BAK%sT 1991_2_31_2 4",
            "4 - BAKST 1991_7_30 4",
            "3 RussiaAsia AZ%sT 1992_8_26_23 4",
            "4 - AZT 1996 4",
            "4 EUAsia AZ%sT 1997 4",
            "4 Azer AZ%sT"
        ],
        "Asia/Bangkok": [
            "6:42:4 - LMT 1880 6:42:4",
            "6:42:4 - BMT 1920_3 6:42:4",
            "7 - ICT"
        ],
        "Asia/Beirut": [
            "2:22 - LMT 1880 2:22",
            "2 Lebanon EE%sT"
        ],
        "Asia/Bishkek": [
            "4:58:24 - LMT 1924_4_2 4:58:24",
            "5 - FRUT 1930_5_21 5",
            "6 RussiaAsia FRU%sT 1991_2_31_2 6",
            "6 - FRUST 1991_7_31_2 6",
            "5 Kyrgyz KG%sT 2005_7_12 6",
            "6 - KGT"
        ],
        "Asia/Brunei": [
            "7:39:40 - LMT 1926_2 7:39:40",
            "7:30 - BNT 1933 7:30",
            "8 - BNT"
        ],
        "Asia/Choibalsan": [
            "7:38 - LMT 1905_7 7:38",
            "7 - ULAT 1978 7",
            "8 - ULAT 1983_3 8",
            "9 Mongol CHO%sT 2008_2_31 9",
            "8 Mongol CHO%sT"
        ],
        "Asia/Chongqing": [
            "7:6:20 - LMT 1928 7:6:20",
            "7 - LONT 1980_4 7",
            "8 PRC C%sT"
        ],
        "Asia/Colombo": [
            "5:19:24 - LMT 1880 5:19:24",
            "5:19:32 - MMT 1906 5:19:32",
            "5:30 - IST 1942_0_5 5:30",
            "6 - IHST 1942_8 6",
            "6:30 - IST 1945_9_16_2 6:30",
            "5:30 - IST 1996_4_25_0 5:30",
            "6:30 - LKT 1996_9_26_0_30 6:30",
            "6 - LKT 2006_3_15_0_30 6",
            "5:30 - IST"
        ],
        "Asia/Damascus": [
            "2:25:12 - LMT 1920 2:25:12",
            "2 Syria EE%sT"
        ],
        "Asia/Dhaka": [
            "6:1:40 - LMT 1890 6:1:40",
            "5:53:20 - HMT 1941_9 5:53:20",
            "6:30 - BURT 1942_4_15 6:30",
            "5:30 - IST 1942_8 5:30",
            "6:30 - BURT 1951_8_30 6:30",
            "6 - DACT 1971_2_26 6",
            "6 - BDT 2009 6",
            "6 Dhaka BD%sT"
        ],
        "Asia/Dili": [
            "8:22:20 - LMT 1912 8:22:20",
            "8 - TLT 1942_1_21_23 8",
            "9 - JST 1945_8_23 9",
            "9 - TLT 1976_4_3 9",
            "8 - CIT 2000_8_17_00 8",
            "9 - TLT"
        ],
        "Asia/Dubai": [
            "3:41:12 - LMT 1920 3:41:12",
            "4 - GST"
        ],
        "Asia/Dushanbe": [
            "4:35:12 - LMT 1924_4_2 4:35:12",
            "5 - DUST 1930_5_21 5",
            "6 RussiaAsia DUS%sT 1991_2_31_2 6",
            "6 - DUSST 1991_8_9_2 5",
            "5 - TJT"
        ],
        "Asia/Gaza": [
            "2:17:52 - LMT 1900_9 2:17:52",
            "2 Zion EET 1948_4_15 2",
            "2 EgyptAsia EE%sT 1967_5_5 3",
            "2 Zion I%sT 1996 2",
            "2 Jordan EE%sT 1999 2",
            "2 Palestine EE%sT 2008_7_29_0 3",
            "2 - EET 2008_8 2",
            "2 Palestine EE%sT 2010 2",
            "2 - EET 2010_2_27_0_1 2",
            "2 Palestine EE%sT 2011_7_1 3",
            "2 - EET 2012 2",
            "2 Palestine EE%sT"
        ],
        "Asia/Harbin": [
            "8:26:44 - LMT 1928 8:26:44",
            "8:30 - CHAT 1932_2 8:30",
            "8 - CST 1940 8",
            "9 - CHAT 1966_4 9",
            "8:30 - CHAT 1980_4 8:30",
            "8 PRC C%sT"
        ],
        "Asia/Hebron": [
            "2:20:23 - LMT 1900_9 2:20:23",
            "2 Zion EET 1948_4_15 2",
            "2 EgyptAsia EE%sT 1967_5_5 3",
            "2 Zion I%sT 1996 2",
            "2 Jordan EE%sT 1999 2",
            "2 Palestine EE%sT"
        ],
        "Asia/Ho_Chi_Minh": [
            "7:6:40 - LMT 1906_5_9 7:6:40",
            "7:6:20 - SMT 1911_2_11_0_1 7:6:20",
            "7 - ICT 1912_4 7",
            "8 - ICT 1931_4 8",
            "7 - ICT"
        ],
        "Asia/Hong_Kong": [
            "7:36:42 - LMT 1904_9_30 7:36:42",
            "8 HK HK%sT 1941_11_25 8",
            "9 - JST 1945_8_15 9",
            "8 HK HK%sT"
        ],
        "Asia/Hovd": [
            "6:6:36 - LMT 1905_7 6:6:36",
            "6 - HOVT 1978 6",
            "7 Mongol HOV%sT"
        ],
        "Asia/Irkutsk": [
            "6:57:20 - LMT 1880 6:57:20",
            "6:57:20 - IMT 1920_0_25 6:57:20",
            "7 - IRKT 1930_5_21 7",
            "8 Russia IRK%sT 1991_2_31_2 8",
            "7 Russia IRK%sT 1992_0_19_2 7",
            "8 Russia IRK%sT 2011_2_27_2 8",
            "9 - IRKT"
        ],
        "Asia/Jakarta": [
            "7:7:12 - LMT 1867_7_10 7:7:12",
            "7:7:12 - JMT 1923_11_31_23_47_12 7:7:12",
            "7:20 - JAVT 1932_10 7:20",
            "7:30 - WIT 1942_2_23 7:30",
            "9 - JST 1945_8_23 9",
            "7:30 - WIT 1948_4 7:30",
            "8 - WIT 1950_4 8",
            "7:30 - WIT 1964 7:30",
            "7 - WIT"
        ],
        "Asia/Jayapura": [
            "9:22:48 - LMT 1932_10 9:22:48",
            "9 - EIT 1944_8_1 9",
            "9:30 - CST 1964 9:30",
            "9 - EIT"
        ],
        "Asia/Jerusalem": [
            "2:20:56 - LMT 1880 2:20:56",
            "2:20:40 - JMT 1918 2:20:40",
            "2 Zion I%sT"
        ],
        "Asia/Kabul": [
            "4:36:48 - LMT 1890 4:36:48",
            "4 - AFT 1945 4",
            "4:30 - AFT"
        ],
        "Asia/Kamchatka": [
            "10:34:36 - LMT 1922_10_10 10:34:36",
            "11 - PETT 1930_5_21 11",
            "12 Russia PET%sT 1991_2_31_2 12",
            "11 Russia PET%sT 1992_0_19_2 11",
            "12 Russia PET%sT 2010_2_28_2 12",
            "11 Russia PET%sT 2011_2_27_2 11",
            "12 - PETT"
        ],
        "Asia/Karachi": [
            "4:28:12 - LMT 1907 4:28:12",
            "5:30 - IST 1942_8 5:30",
            "6:30 - IST 1945_9_15 6:30",
            "5:30 - IST 1951_8_30 5:30",
            "5 - KART 1971_2_26 5",
            "5 Pakistan PK%sT"
        ],
        "Asia/Kashgar": [
            "5:3:56 - LMT 1928 5:3:56",
            "5:30 - KAST 1940 5:30",
            "5 - KAST 1980_4 5",
            "8 PRC C%sT"
        ],
        "Asia/Kathmandu": [
            "5:41:16 - LMT 1920 5:41:16",
            "5:30 - IST 1986 5:30",
            "5:45 - NPT"
        ],
        "Asia/Khandyga": [
            "9:2:13 - LMT 1919_11_15 9:2:13",
            "8 - YAKT 1930_5_21 8",
            "9 Russia YAK%sT 1991_2_31_2 9",
            "8 Russia YAK%sT 1992_0_19_2 8",
            "9 Russia YAK%sT 2004 9",
            "10 Russia VLA%sT 2011_2_27_2 10",
            "11 - VLAT 2011_8_13_0 11",
            "10 - YAKT"
        ],
        "Asia/Kolkata": [
            "5:53:28 - LMT 1880 5:53:28",
            "5:53:20 - HMT 1941_9 5:53:20",
            "6:30 - BURT 1942_4_15 6:30",
            "5:30 - IST 1942_8 5:30",
            "6:30 - IST 1945_9_15 6:30",
            "5:30 - IST"
        ],
        "Asia/Krasnoyarsk": [
            "6:11:20 - LMT 1920_0_6 6:11:20",
            "6 - KRAT 1930_5_21 6",
            "7 Russia KRA%sT 1991_2_31_2 7",
            "6 Russia KRA%sT 1992_0_19_2 6",
            "7 Russia KRA%sT 2011_2_27_2 7",
            "8 - KRAT"
        ],
        "Asia/Kuala_Lumpur": [
            "6:46:46 - LMT 1901_0_1 6:46:46",
            "6:55:25 - SMT 1905_5_1 6:55:25",
            "7 - MALT 1933_0_1 7",
            "7:20 - MALST 1936_0_1 7:20",
            "7:20 - MALT 1941_8_1 7:20",
            "7:30 - MALT 1942_1_16 7:30",
            "9 - JST 1945_8_12 9",
            "7:30 - MALT 1982_0_1 7:30",
            "8 - MYT"
        ],
        "Asia/Kuching": [
            "7:21:20 - LMT 1926_2 7:21:20",
            "7:30 - BORT 1933 7:30",
            "8 NBorneo BOR%sT 1942_1_16 8",
            "9 - JST 1945_8_12 9",
            "8 - BORT 1982_0_1 8",
            "8 - MYT"
        ],
        "Asia/Kuwait": [
            "3:11:56 - LMT 1950 3:11:56",
            "3 - AST"
        ],
        "Asia/Macau": [
            "7:34:20 - LMT 1912 7:34:20",
            "8 Macau MO%sT 1999_11_20 8",
            "8 PRC C%sT"
        ],
        "Asia/Magadan": [
            "10:3:12 - LMT 1924_4_2 10:3:12",
            "10 - MAGT 1930_5_21 10",
            "11 Russia MAG%sT 1991_2_31_2 11",
            "10 Russia MAG%sT 1992_0_19_2 10",
            "11 Russia MAG%sT 2011_2_27_2 11",
            "12 - MAGT"
        ],
        "Asia/Makassar": [
            "7:57:36 - LMT 1920 7:57:36",
            "7:57:36 - MMT 1932_10 7:57:36",
            "8 - CIT 1942_1_9 8",
            "9 - JST 1945_8_23 9",
            "8 - CIT"
        ],
        "Asia/Manila": [
            "-15:56 - LMT 1844_11_31 -15:56",
            "8:4 - LMT 1899_4_11 8:4",
            "8 Phil PH%sT 1942_4 8",
            "9 - JST 1944_10 9",
            "8 Phil PH%sT"
        ],
        "Asia/Muscat": [
            "3:54:24 - LMT 1920 3:54:24",
            "4 - GST"
        ],
        "Asia/Nicosia": [
            "2:13:28 - LMT 1921_10_14 2:13:28",
            "2 Cyprus EE%sT 1998_8 3",
            "2 EUAsia EE%sT"
        ],
        "Asia/Novokuznetsk": [
            "5:48:48 - NMT 1920_0_6 5:48:48",
            "6 - KRAT 1930_5_21 6",
            "7 Russia KRA%sT 1991_2_31_2 7",
            "6 Russia KRA%sT 1992_0_19_2 6",
            "7 Russia KRA%sT 2010_2_28_2 7",
            "6 Russia NOV%sT 2011_2_27_2 6",
            "7 - NOVT"
        ],
        "Asia/Novosibirsk": [
            "5:31:40 - LMT 1919_11_14_6 5:31:40",
            "6 - NOVT 1930_5_21 6",
            "7 Russia NOV%sT 1991_2_31_2 7",
            "6 Russia NOV%sT 1992_0_19_2 6",
            "7 Russia NOV%sT 1993_4_23 8",
            "6 Russia NOV%sT 2011_2_27_2 6",
            "7 - NOVT"
        ],
        "Asia/Omsk": [
            "4:53:36 - LMT 1919_10_14 4:53:36",
            "5 - OMST 1930_5_21 5",
            "6 Russia OMS%sT 1991_2_31_2 6",
            "5 Russia OMS%sT 1992_0_19_2 5",
            "6 Russia OMS%sT 2011_2_27_2 6",
            "7 - OMST"
        ],
        "Asia/Oral": [
            "3:25:24 - LMT 1924_4_2 3:25:24",
            "4 - URAT 1930_5_21 4",
            "5 - URAT 1981_3_1 5",
            "6 - URAST 1981_9_1 6",
            "6 - URAT 1982_3_1 6",
            "5 RussiaAsia URA%sT 1989_2_26_2 5",
            "4 RussiaAsia URA%sT 1991 4",
            "4 - URAT 1991_11_16 4",
            "4 RussiaAsia ORA%sT 2005_2_15 4",
            "5 - ORAT"
        ],
        "Asia/Phnom_Penh": [
            "6:59:40 - LMT 1906_5_9 6:59:40",
            "7:6:20 - SMT 1911_2_11_0_1 7:6:20",
            "7 - ICT 1912_4 7",
            "8 - ICT 1931_4 8",
            "7 - ICT"
        ],
        "Asia/Pontianak": [
            "7:17:20 - LMT 1908_4 7:17:20",
            "7:17:20 - PMT 1932_10 7:17:20",
            "7:30 - WIT 1942_0_29 7:30",
            "9 - JST 1945_8_23 9",
            "7:30 - WIT 1948_4 7:30",
            "8 - WIT 1950_4 8",
            "7:30 - WIT 1964 7:30",
            "8 - CIT 1988_0_1 8",
            "7 - WIT"
        ],
        "Asia/Pyongyang": [
            "8:23 - LMT 1890 8:23",
            "8:30 - KST 1904_11 8:30",
            "9 - KST 1928 9",
            "8:30 - KST 1932 8:30",
            "9 - KST 1954_2_21 9",
            "8 - KST 1961_7_10 8",
            "9 - KST"
        ],
        "Asia/Qatar": [
            "3:26:8 - LMT 1920 3:26:8",
            "4 - GST 1972_5 4",
            "3 - AST"
        ],
        "Asia/Qyzylorda": [
            "4:21:52 - LMT 1924_4_2 4:21:52",
            "4 - KIZT 1930_5_21 4",
            "5 - KIZT 1981_3_1 5",
            "6 - KIZST 1981_9_1 6",
            "6 - KIZT 1982_3_1 6",
            "5 RussiaAsia KIZ%sT 1991 5",
            "5 - KIZT 1991_11_16 5",
            "5 - QYZT 1992_0_19_2 5",
            "6 RussiaAsia QYZ%sT 2005_2_15 6",
            "6 - QYZT"
        ],
        "Asia/Rangoon": [
            "6:24:40 - LMT 1880 6:24:40",
            "6:24:40 - RMT 1920 6:24:40",
            "6:30 - BURT 1942_4 6:30",
            "9 - JST 1945_4_3 9",
            "6:30 - MMT"
        ],
        "Asia/Riyadh": [
            "3:6:52 - LMT 1950 3:6:52",
            "3 - AST"
        ],
        "Asia/Sakhalin": [
            "9:30:48 - LMT 1905_7_23 9:30:48",
            "9 - CJT 1938 9",
            "9 - JST 1945_7_25 9",
            "11 Russia SAK%sT 1991_2_31_2 11",
            "10 Russia SAK%sT 1992_0_19_2 10",
            "11 Russia SAK%sT 1997_2_30_2 11",
            "10 Russia SAK%sT 2011_2_27_2 10",
            "11 - SAKT"
        ],
        "Asia/Samarkand": [
            "4:27:12 - LMT 1924_4_2 4:27:12",
            "4 - SAMT 1930_5_21 4",
            "5 - SAMT 1981_3_1 5",
            "6 - SAMST 1981_9_1 6",
            "6 - TAST 1982_3_1 6",
            "5 RussiaAsia SAM%sT 1991_8_1 6",
            "5 RussiaAsia UZ%sT 1992 5",
            "5 - UZT"
        ],
        "Asia/Seoul": [
            "8:27:52 - LMT 1890 8:27:52",
            "8:30 - KST 1904_11 8:30",
            "9 - KST 1928 9",
            "8:30 - KST 1932 8:30",
            "9 - KST 1954_2_21 9",
            "8 ROK K%sT 1961_7_10 8",
            "8:30 - KST 1968_9 8:30",
            "9 ROK K%sT"
        ],
        "Asia/Shanghai": [
            "8:5:57 - LMT 1928 8:5:57",
            "8 Shang C%sT 1949 8",
            "8 PRC C%sT"
        ],
        "Asia/Singapore": [
            "6:55:25 - LMT 1901_0_1 6:55:25",
            "6:55:25 - SMT 1905_5_1 6:55:25",
            "7 - MALT 1933_0_1 7",
            "7:20 - MALST 1936_0_1 7:20",
            "7:20 - MALT 1941_8_1 7:20",
            "7:30 - MALT 1942_1_16 7:30",
            "9 - JST 1945_8_12 9",
            "7:30 - MALT 1965_7_9 7:30",
            "7:30 - SGT 1982_0_1 7:30",
            "8 - SGT"
        ],
        "Asia/Taipei": [
            "8:6 - LMT 1896 8:6",
            "8 Taiwan C%sT"
        ],
        "Asia/Tashkent": [
            "4:37:12 - LMT 1924_4_2 4:37:12",
            "5 - TAST 1930_5_21 5",
            "6 RussiaAsia TAS%sT 1991_2_31_2 6",
            "5 RussiaAsia TAS%sT 1991_8_1 6",
            "5 RussiaAsia UZ%sT 1992 5",
            "5 - UZT"
        ],
        "Asia/Tbilisi": [
            "2:59:16 - LMT 1880 2:59:16",
            "2:59:16 - TBMT 1924_4_2 2:59:16",
            "3 - TBIT 1957_2 3",
            "4 RussiaAsia TBI%sT 1991_2_31_2 4",
            "4 - TBIST 1991_3_9 4",
            "3 RussiaAsia GE%sT 1992 3",
            "3 E-EurAsia GE%sT 1994_8_25 4",
            "4 E-EurAsia GE%sT 1996_9_27 5",
            "5 - GEST 1997_2_30 5",
            "4 E-EurAsia GE%sT 2004_5_27 5",
            "3 RussiaAsia GE%sT 2005_2_27_2 3",
            "4 - GET"
        ],
        "Asia/Tehran": [
            "3:25:44 - LMT 1916 3:25:44",
            "3:25:44 - TMT 1946 3:25:44",
            "3:30 - IRST 1977_10 3:30",
            "4 Iran IR%sT 1979 4",
            "3:30 Iran IR%sT"
        ],
        "Asia/Thimphu": [
            "5:58:36 - LMT 1947_7_15 5:58:36",
            "5:30 - IST 1987_9 5:30",
            "6 - BTT"
        ],
        "Asia/Tokyo": [
            "9:18:59 - LMT 1887_11_31_15",
            "9 - JST 1896 9",
            "9 - CJT 1938 9",
            "9 Japan J%sT"
        ],
        "Asia/Ulaanbaatar": [
            "7:7:32 - LMT 1905_7 7:7:32",
            "7 - ULAT 1978 7",
            "8 Mongol ULA%sT"
        ],
        "Asia/Urumqi": [
            "5:50:20 - LMT 1928 5:50:20",
            "6 - URUT 1980_4 6",
            "8 PRC C%sT"
        ],
        "Asia/Ust-Nera": [
            "9:32:54 - LMT 1919_11_15 9:32:54",
            "8 - YAKT 1930_5_21 8",
            "9 Russia YAKT 1981_3_1 9",
            "11 Russia MAG%sT 1991_2_31_2 11",
            "10 Russia MAG%sT 1992_0_19_2 10",
            "11 Russia MAG%sT 2011_2_27_2 11",
            "12 - MAGT 2011_8_13_0 12",
            "11 - VLAT"
        ],
        "Asia/Vientiane": [
            "6:50:24 - LMT 1906_5_9 6:50:24",
            "7:6:20 - SMT 1911_2_11_0_1 7:6:20",
            "7 - ICT 1912_4 7",
            "8 - ICT 1931_4 8",
            "7 - ICT"
        ],
        "Asia/Vladivostok": [
            "8:47:44 - LMT 1922_10_15 8:47:44",
            "9 - VLAT 1930_5_21 9",
            "10 Russia VLA%sT 1991_2_31_2 10",
            "9 Russia VLA%sST 1992_0_19_2 9",
            "10 Russia VLA%sT 2011_2_27_2 10",
            "11 - VLAT"
        ],
        "Asia/Yakutsk": [
            "8:38:40 - LMT 1919_11_15 8:38:40",
            "8 - YAKT 1930_5_21 8",
            "9 Russia YAK%sT 1991_2_31_2 9",
            "8 Russia YAK%sT 1992_0_19_2 8",
            "9 Russia YAK%sT 2011_2_27_2 9",
            "10 - YAKT"
        ],
        "Asia/Yekaterinburg": [
            "4:2:24 - LMT 1919_6_15_4 4:2:24",
            "4 - SVET 1930_5_21 4",
            "5 Russia SVE%sT 1991_2_31_2 5",
            "4 Russia SVE%sT 1992_0_19_2 4",
            "5 Russia YEK%sT 2011_2_27_2 5",
            "6 - YEKT"
        ],
        "Asia/Yerevan": [
            "2:58 - LMT 1924_4_2 2:58",
            "3 - YERT 1957_2 3",
            "4 RussiaAsia YER%sT 1991_2_31_2 4",
            "4 - YERST 1991_8_23 4",
            "3 RussiaAsia AM%sT 1995_8_24_2 3",
            "4 - AMT 1997 4",
            "4 RussiaAsia AM%sT 2012_2_25_2 4",
            "4 - AMT"
        ],
        "Atlantic/Azores": [
            "-1:42:40 - LMT 1884 -1:42:40",
            "-1:54:32 - HMT 1911_4_24 -1:54:32",
            "-2 Port AZO%sT 1966_3_3_2 -2",
            "-1 Port AZO%sT 1983_8_25_1 -1",
            "-1 W-Eur AZO%sT 1992_8_27_1 -1",
            "0 EU WE%sT 1993_2_28_1",
            "-1 EU AZO%sT"
        ],
        "Atlantic/Bermuda": [
            "-4:19:18 - LMT 1930_0_1_2 -4:19:18",
            "-4 - AST 1974_3_28_2 -4",
            "-4 Bahamas A%sT 1976 -4",
            "-4 US A%sT"
        ],
        "Atlantic/Canary": [
            "-1:1:36 - LMT 1922_2 -1:1:36",
            "-1 - CANT 1946_8_30_1 -1",
            "0 - WET 1980_3_6_0",
            "1 - WEST 1980_8_28_0",
            "0 EU WE%sT"
        ],
        "Atlantic/Cape_Verde": [
            "-1:34:4 - LMT 1907 -1:34:4",
            "-2 - CVT 1942_8 -2",
            "-1 - CVST 1945_9_15 -1",
            "-2 - CVT 1975_10_25_2 -2",
            "-1 - CVT"
        ],
        "Atlantic/Faroe": [
            "-0:27:4 - LMT 1908_0_11 -0:27:4",
            "0 - WET 1981",
            "0 EU WE%sT"
        ],
        "Atlantic/Madeira": [
            "-1:7:36 - LMT 1884 -1:7:36",
            "-1:7:36 - FMT 1911_4_24 -1:7:36",
            "-1 Port MAD%sT 1966_3_3_2 -1",
            "0 Port WE%sT 1983_8_25_1",
            "0 EU WE%sT"
        ],
        "Atlantic/Reykjavik": [
            "-1:27:24 - LMT 1837 -1:27:24",
            "-1:27:48 - RMT 1908 -1:27:48",
            "-1 Iceland IS%sT 1968_3_7_1 -1",
            "0 - GMT"
        ],
        "Atlantic/South_Georgia": [
            "-2:26:8 - LMT 1890 -2:26:8",
            "-2 - GST"
        ],
        "Atlantic/St_Helena": [
            "-0:22:48 - LMT 1890 -0:22:48",
            "-0:22:48 - JMT 1951 -0:22:48",
            "0 - GMT"
        ],
        "Atlantic/Stanley": [
            "-3:51:24 - LMT 1890 -3:51:24",
            "-3:51:24 - SMT 1912_2_12 -3:51:24",
            "-4 Falk FK%sT 1983_4 -4",
            "-3 Falk FK%sT 1985_8_15 -3",
            "-4 Falk FK%sT 2010_8_5_02 -4",
            "-3 - FKST"
        ],
        "Australia/Adelaide": [
            "9:14:20 - LMT 1895_1 9:14:20",
            "9 - CST 1899_4 9",
            "9:30 Aus CST 1971 9:30",
            "9:30 AS CST"
        ],
        "Australia/Brisbane": [
            "10:12:8 - LMT 1895 10:12:8",
            "10 Aus EST 1971 10",
            "10 AQ EST"
        ],
        "Australia/Broken_Hill": [
            "9:25:48 - LMT 1895_1 9:25:48",
            "10 - EST 1896_7_23 10",
            "9 - CST 1899_4 9",
            "9:30 Aus CST 1971 9:30",
            "9:30 AN CST 2000 10:30",
            "9:30 AS CST"
        ],
        "Australia/Currie": [
            "9:35:28 - LMT 1895_8 9:35:28",
            "10 - EST 1916_9_1_2 10",
            "11 - EST 1917_1 11",
            "10 Aus EST 1971_6 10",
            "10 AT EST"
        ],
        "Australia/Darwin": [
            "8:43:20 - LMT 1895_1 8:43:20",
            "9 - CST 1899_4 9",
            "9:30 Aus CST"
        ],
        "Australia/Eucla": [
            "8:35:28 - LMT 1895_11 8:35:28",
            "8:45 Aus CWST 1943_6 8:45",
            "8:45 AW CWST"
        ],
        "Australia/Hobart": [
            "9:49:16 - LMT 1895_8 9:49:16",
            "10 - EST 1916_9_1_2 10",
            "11 - EST 1917_1 11",
            "10 Aus EST 1967 10",
            "10 AT EST"
        ],
        "Australia/Lindeman": [
            "9:55:56 - LMT 1895 9:55:56",
            "10 Aus EST 1971 10",
            "10 AQ EST 1992_6 10",
            "10 Holiday EST"
        ],
        "Australia/Lord_Howe": [
            "10:36:20 - LMT 1895_1 10:36:20",
            "10 - EST 1981_2 10",
            "10:30 LH LHST"
        ],
        "Australia/Melbourne": [
            "9:39:52 - LMT 1895_1 9:39:52",
            "10 Aus EST 1971 10",
            "10 AV EST"
        ],
        "Australia/Perth": [
            "7:43:24 - LMT 1895_11 7:43:24",
            "8 Aus WST 1943_6 8",
            "8 AW WST"
        ],
        "Australia/Sydney": [
            "10:4:52 - LMT 1895_1 10:4:52",
            "10 Aus EST 1971 10",
            "10 AN EST"
        ],
        "CET": [
            "1 C-Eur CE%sT"
        ],
        "CST6CDT": [
            "-6 US C%sT"
        ],
        "EET": [
            "2 EU EE%sT"
        ],
        "EST": [
            "-5 - EST"
        ],
        "EST5EDT": [
            "-5 US E%sT"
        ],
        "HST": [
            "-10 - HST"
        ],
        "MET": [
            "1 C-Eur ME%sT"
        ],
        "MST": [
            "-7 - MST"
        ],
        "MST7MDT": [
            "-7 US M%sT"
        ],
        "PST8PDT": [
            "-8 US P%sT"
        ],
        "WET": [
            "0 EU WE%sT"
        ],
        "Europe/Amsterdam": [
            "0:19:32 - LMT 1835 0:19:32",
            "0:19:32 Neth %s 1937_6_1 1:19:32",
            "0:20 Neth NE%sT 1940_4_16_0 0:20",
            "1 C-Eur CE%sT 1945_3_2_2 1",
            "1 Neth CE%sT 1977 1",
            "1 EU CE%sT"
        ],
        "Europe/Andorra": [
            "0:6:4 - LMT 1901 0:6:4",
            "0 - WET 1946_8_30",
            "1 - CET 1985_2_31_2 1",
            "1 EU CE%sT"
        ],
        "Europe/Athens": [
            "1:34:52 - LMT 1895_8_14 1:34:52",
            "1:34:52 - AMT 1916_6_28_0_1 1:34:52",
            "2 Greece EE%sT 1941_3_30 3",
            "1 Greece CE%sT 1944_3_4 1",
            "2 Greece EE%sT 1981 2",
            "2 EU EE%sT"
        ],
        "Europe/Belgrade": [
            "1:22 - LMT 1884 1:22",
            "1 - CET 1941_3_18_23 1",
            "1 C-Eur CE%sT 1945 1",
            "1 - CET 1945_4_8_2 1",
            "2 - CEST 1945_8_16_2 1",
            "1 - CET 1982_10_27 1",
            "1 EU CE%sT"
        ],
        "Europe/Berlin": [
            "0:53:28 - LMT 1893_3 0:53:28",
            "1 C-Eur CE%sT 1945_4_24_2 2",
            "1 SovietZone CE%sT 1946 1",
            "1 Germany CE%sT 1980 1",
            "1 EU CE%sT"
        ],
        "Europe/Prague": [
            "0:57:44 - LMT 1850 0:57:44",
            "0:57:44 - PMT 1891_9 0:57:44",
            "1 C-Eur CE%sT 1944_8_17_2 1",
            "1 Czech CE%sT 1979 1",
            "1 EU CE%sT"
        ],
        "Europe/Brussels": [
            "0:17:30 - LMT 1880 0:17:30",
            "0:17:30 - BMT 1892_4_1_12 0:17:30",
            "0 - WET 1914_10_8",
            "1 - CET 1916_4_1_0 1",
            "1 C-Eur CE%sT 1918_10_11_11",
            "0 Belgium WE%sT 1940_4_20_2",
            "1 C-Eur CE%sT 1944_8_3 2",
            "1 Belgium CE%sT 1977 1",
            "1 EU CE%sT"
        ],
        "Europe/Bucharest": [
            "1:44:24 - LMT 1891_9 1:44:24",
            "1:44:24 - BMT 1931_6_24 1:44:24",
            "2 Romania EE%sT 1981_2_29_2 2",
            "2 C-Eur EE%sT 1991 2",
            "2 Romania EE%sT 1994 2",
            "2 E-Eur EE%sT 1997 2",
            "2 EU EE%sT"
        ],
        "Europe/Budapest": [
            "1:16:20 - LMT 1890_9 1:16:20",
            "1 C-Eur CE%sT 1918 1",
            "1 Hungary CE%sT 1941_3_6_2 1",
            "1 C-Eur CE%sT 1945 1",
            "1 Hungary CE%sT 1980_8_28_2 1",
            "1 EU CE%sT"
        ],
        "Europe/Zurich": [
            "0:34:8 - LMT 1848_8_12 0:34:8",
            "0:29:44 - BMT 1894_5 0:29:44",
            "1 Swiss CE%sT 1981 1",
            "1 EU CE%sT"
        ],
        "Europe/Chisinau": [
            "1:55:20 - LMT 1880 1:55:20",
            "1:55 - CMT 1918_1_15 1:55",
            "1:44:24 - BMT 1931_6_24 1:44:24",
            "2 Romania EE%sT 1940_7_15 2",
            "3 - EEST 1941_6_17 3",
            "1 C-Eur CE%sT 1944_7_24 2",
            "3 Russia MSK/MSD 1990 3",
            "3 - MSK 1990_4_6 3",
            "2 - EET 1991 2",
            "2 Russia EE%sT 1992 2",
            "2 E-Eur EE%sT 1997 2",
            "2 EU EE%sT"
        ],
        "Europe/Copenhagen": [
            "0:50:20 - LMT 1890 0:50:20",
            "0:50:20 - CMT 1894_0_1 0:50:20",
            "1 Denmark CE%sT 1942_10_2_2 1",
            "1 C-Eur CE%sT 1945_3_2_2 1",
            "1 Denmark CE%sT 1980 1",
            "1 EU CE%sT"
        ],
        "Europe/Dublin": [
            "-0:25 - LMT 1880_7_2 -0:25",
            "-0:25:21 - DMT 1916_4_21_2 -0:25:21",
            "0:34:39 - IST 1916_9_1_2 -0:25:21",
            "0 GB-Eire %s 1921_11_6",
            "0 GB-Eire GMT/IST 1940_1_25_2",
            "1 - IST 1946_9_6_2 1",
            "0 - GMT 1947_2_16_2",
            "1 - IST 1947_10_2_2 1",
            "0 - GMT 1948_3_18_2",
            "0 GB-Eire GMT/IST 1968_9_27 1",
            "1 - IST 1971_9_31_2",
            "0 GB-Eire GMT/IST 1996",
            "0 EU GMT/IST"
        ],
        "Europe/Gibraltar": [
            "-0:21:24 - LMT 1880_7_2_0 -0:21:24",
            "0 GB-Eire %s 1957_3_14_2",
            "1 - CET 1982 1",
            "1 EU CE%sT"
        ],
        "Europe/London": [
            "-0:1:15 - LMT 1847_11_1_0 -0:1:15",
            "0 GB-Eire %s 1968_9_27 1",
            "1 - BST 1971_9_31_2",
            "0 GB-Eire %s 1996",
            "0 EU GMT/BST"
        ],
        "Europe/Helsinki": [
            "1:39:52 - LMT 1878_4_31 1:39:52",
            "1:39:52 - HMT 1921_4 1:39:52",
            "2 Finland EE%sT 1983 2",
            "2 EU EE%sT"
        ],
        "Europe/Istanbul": [
            "1:55:52 - LMT 1880 1:55:52",
            "1:56:56 - IMT 1910_9 1:56:56",
            "2 Turkey EE%sT 1978_9_15 3",
            "3 Turkey TR%sT 1985_3_20 3",
            "2 Turkey EE%sT 2007 2",
            "2 EU EE%sT 2011_2_27_1",
            "2 - EET 2011_2_28_1",
            "2 EU EE%sT"
        ],
        "Europe/Kaliningrad": [
            "1:22 - LMT 1893_3 1:22",
            "1 C-Eur CE%sT 1945 1",
            "2 Poland CE%sT 1946 2",
            "3 Russia MSK/MSD 1991_2_31_2 3",
            "2 Russia EE%sT 2011_2_27_2 2",
            "3 - FET"
        ],
        "Europe/Kiev": [
            "2:2:4 - LMT 1880 2:2:4",
            "2:2:4 - KMT 1924_4_2 2:2:4",
            "2 - EET 1930_5_21 2",
            "3 - MSK 1941_8_20 3",
            "1 C-Eur CE%sT 1943_10_6 1",
            "3 Russia MSK/MSD 1990 3",
            "3 - MSK 1990_6_1_2 3",
            "2 - EET 1992 2",
            "2 E-Eur EE%sT 1995 2",
            "2 EU EE%sT"
        ],
        "Europe/Lisbon": [
            "-0:36:32 - LMT 1884 -0:36:32",
            "-0:36:32 - LMT 1912_0_1 -0:36:32",
            "0 Port WE%sT 1966_3_3_2",
            "1 - CET 1976_8_26_1 1",
            "0 Port WE%sT 1983_8_25_1",
            "0 W-Eur WE%sT 1992_8_27_1",
            "1 EU CE%sT 1996_2_31_1",
            "0 EU WE%sT"
        ],
        "Europe/Luxembourg": [
            "0:24:36 - LMT 1904_5 0:24:36",
            "1 Lux CE%sT 1918_10_25 1",
            "0 Lux WE%sT 1929_9_6_2",
            "0 Belgium WE%sT 1940_4_14_3 1",
            "1 C-Eur WE%sT 1944_8_18_3 2",
            "1 Belgium CE%sT 1977 1",
            "1 EU CE%sT"
        ],
        "Europe/Madrid": [
            "-0:14:44 - LMT 1901_0_1_0 -0:14:44",
            "0 Spain WE%sT 1946_8_30 2",
            "1 Spain CE%sT 1979 1",
            "1 EU CE%sT"
        ],
        "Europe/Malta": [
            "0:58:4 - LMT 1893_10_2_0 0:58:4",
            "1 Italy CE%sT 1942_10_2_2 1",
            "1 C-Eur CE%sT 1945_3_2_2 1",
            "1 Italy CE%sT 1973_2_31 1",
            "1 Malta CE%sT 1981 1",
            "1 EU CE%sT"
        ],
        "Europe/Minsk": [
            "1:50:16 - LMT 1880 1:50:16",
            "1:50 - MMT 1924_4_2 1:50",
            "2 - EET 1930_5_21 2",
            "3 - MSK 1941_5_28 3",
            "1 C-Eur CE%sT 1944_6_3 2",
            "3 Russia MSK/MSD 1990 3",
            "3 - MSK 1991_2_31_2 3",
            "3 - EEST 1991_8_29_2 2",
            "2 - EET 1992_2_29_0 2",
            "3 - EEST 1992_8_27_0 2",
            "2 Russia EE%sT 2011_2_27_2 2",
            "3 - FET"
        ],
        "Europe/Monaco": [
            "0:29:32 - LMT 1891_2_15 0:29:32",
            "0:9:21 - PMT 1911_2_11 0:9:21",
            "0 France WE%sT 1945_8_16_3 2",
            "1 France CE%sT 1977 1",
            "1 EU CE%sT"
        ],
        "Europe/Moscow": [
            "2:30:20 - LMT 1880 2:30:20",
            "2:30 - MMT 1916_6_3 2:30",
            "2:30:48 Russia %s 1919_6_1_2 4:30:48",
            "3 Russia MSK/MSD 1922_9 3",
            "2 - EET 1930_5_21 2",
            "3 Russia MSK/MSD 1991_2_31_2 3",
            "2 Russia EE%sT 1992_0_19_2 2",
            "3 Russia MSK/MSD 2011_2_27_2 3",
            "4 - MSK"
        ],
        "Europe/Paris": [
            "0:9:21 - LMT 1891_2_15_0_1 0:9:21",
            "0:9:21 - PMT 1911_2_11_0_1 0:9:21",
            "0 France WE%sT 1940_5_14_23 1",
            "1 C-Eur CE%sT 1944_7_25 2",
            "0 France WE%sT 1945_8_16_3 2",
            "1 France CE%sT 1977 1",
            "1 EU CE%sT"
        ],
        "Europe/Riga": [
            "1:36:24 - LMT 1880 1:36:24",
            "1:36:24 - RMT 1918_3_15_2 1:36:24",
            "2:36:24 - LST 1918_8_16_3 2:36:24",
            "1:36:24 - RMT 1919_3_1_2 1:36:24",
            "2:36:24 - LST 1919_4_22_3 2:36:24",
            "1:36:24 - RMT 1926_4_11 1:36:24",
            "2 - EET 1940_7_5 2",
            "3 - MSK 1941_6 3",
            "1 C-Eur CE%sT 1944_9_13 1",
            "3 Russia MSK/MSD 1989_2_26_2 3",
            "3 - EEST 1989_8_24_2 2",
            "2 Latvia EE%sT 1997_0_21 2",
            "2 EU EE%sT 2000_1_29 2",
            "2 - EET 2001_0_2 2",
            "2 EU EE%sT"
        ],
        "Europe/Rome": [
            "0:49:56 - LMT 1866_8_22 0:49:56",
            "0:49:56 - RMT 1893_10_1_0 0:49:56",
            "1 Italy CE%sT 1942_10_2_2 1",
            "1 C-Eur CE%sT 1944_6 2",
            "1 Italy CE%sT 1980 1",
            "1 EU CE%sT"
        ],
        "Europe/Samara": [
            "3:20:36 - LMT 1919_6_1_2 3:20:36",
            "3 - SAMT 1930_5_21 3",
            "4 - SAMT 1935_0_27 4",
            "4 Russia KUY%sT 1989_2_26_2 4",
            "3 Russia KUY%sT 1991_2_31_2 3",
            "2 Russia KUY%sT 1991_8_29_2 2",
            "3 - KUYT 1991_9_20_3 3",
            "4 Russia SAM%sT 2010_2_28_2 4",
            "3 Russia SAM%sT 2011_2_27_2 3",
            "4 - SAMT"
        ],
        "Europe/Simferopol": [
            "2:16:24 - LMT 1880 2:16:24",
            "2:16 - SMT 1924_4_2 2:16",
            "2 - EET 1930_5_21 2",
            "3 - MSK 1941_10 3",
            "1 C-Eur CE%sT 1944_3_13 2",
            "3 Russia MSK/MSD 1990 3",
            "3 - MSK 1990_6_1_2 3",
            "2 - EET 1992 2",
            "2 E-Eur EE%sT 1994_4 3",
            "3 E-Eur MSK/MSD 1996_2_31_3 3",
            "4 - MSD 1996_9_27_3 3",
            "3 Russia MSK/MSD 1997 3",
            "3 - MSK 1997_2_30_1",
            "2 EU EE%sT"
        ],
        "Europe/Sofia": [
            "1:33:16 - LMT 1880 1:33:16",
            "1:56:56 - IMT 1894_10_30 1:56:56",
            "2 - EET 1942_10_2_3 2",
            "1 C-Eur CE%sT 1945 1",
            "1 - CET 1945_3_2_3 1",
            "2 - EET 1979_2_31_23 2",
            "2 Bulg EE%sT 1982_8_26_2 3",
            "2 C-Eur EE%sT 1991 2",
            "2 E-Eur EE%sT 1997 2",
            "2 EU EE%sT"
        ],
        "Europe/Stockholm": [
            "1:12:12 - LMT 1879_0_1 1:12:12",
            "1:0:14 - SET 1900_0_1 1:0:14",
            "1 - CET 1916_4_14_23 1",
            "2 - CEST 1916_9_1_01 2",
            "1 - CET 1980 1",
            "1 EU CE%sT"
        ],
        "Europe/Tallinn": [
            "1:39 - LMT 1880 1:39",
            "1:39 - TMT 1918_1 1:39",
            "1 C-Eur CE%sT 1919_6 1",
            "1:39 - TMT 1921_4 1:39",
            "2 - EET 1940_7_6 2",
            "3 - MSK 1941_8_15 3",
            "1 C-Eur CE%sT 1944_8_22 2",
            "3 Russia MSK/MSD 1989_2_26_2 3",
            "3 - EEST 1989_8_24_2 2",
            "2 C-Eur EE%sT 1998_8_22 3",
            "2 EU EE%sT 1999_10_1 3",
            "2 - EET 2002_1_21 2",
            "2 EU EE%sT"
        ],
        "Europe/Tirane": [
            "1:19:20 - LMT 1914 1:19:20",
            "1 - CET 1940_5_16 1",
            "1 Albania CE%sT 1984_6 2",
            "1 EU CE%sT"
        ],
        "Europe/Uzhgorod": [
            "1:29:12 - LMT 1890_9 1:29:12",
            "1 - CET 1940 1",
            "1 C-Eur CE%sT 1944_9 2",
            "2 - CEST 1944_9_26 2",
            "1 - CET 1945_5_29 1",
            "3 Russia MSK/MSD 1990 3",
            "3 - MSK 1990_6_1_2 3",
            "1 - CET 1991_2_31_3 1",
            "2 - EET 1992 2",
            "2 E-Eur EE%sT 1995 2",
            "2 EU EE%sT"
        ],
        "Europe/Vaduz": [
            "0:38:4 - LMT 1894_5 0:38:4",
            "1 - CET 1981 1",
            "1 EU CE%sT"
        ],
        "Europe/Vienna": [
            "1:5:21 - LMT 1893_3 1:5:21",
            "1 C-Eur CE%sT 1920 1",
            "1 Austria CE%sT 1940_3_1_2 1",
            "1 C-Eur CE%sT 1945_3_2_2 1",
            "2 - CEST 1945_3_12_2 1",
            "1 - CET 1946 1",
            "1 Austria CE%sT 1981 1",
            "1 EU CE%sT"
        ],
        "Europe/Vilnius": [
            "1:41:16 - LMT 1880 1:41:16",
            "1:24 - WMT 1917 1:24",
            "1:35:36 - KMT 1919_9_10 1:35:36",
            "1 - CET 1920_6_12 1",
            "2 - EET 1920_9_9 2",
            "1 - CET 1940_7_3 1",
            "3 - MSK 1941_5_24 3",
            "1 C-Eur CE%sT 1944_7 2",
            "3 Russia MSK/MSD 1991_2_31_2 3",
            "3 - EEST 1991_8_29_2 2",
            "2 C-Eur EE%sT 1998 2",
            "2 - EET 1998_2_29_1",
            "1 EU CE%sT 1999_9_31_1",
            "2 - EET 2003_0_1 2",
            "2 EU EE%sT"
        ],
        "Europe/Volgograd": [
            "2:57:40 - LMT 1920_0_3 2:57:40",
            "3 - TSAT 1925_3_6 3",
            "3 - STAT 1930_5_21 3",
            "4 - STAT 1961_10_11 4",
            "4 Russia VOL%sT 1989_2_26_2 4",
            "3 Russia VOL%sT 1991_2_31_2 3",
            "4 - VOLT 1992_2_29_2 4",
            "3 Russia VOL%sT 2011_2_27_2 3",
            "4 - VOLT"
        ],
        "Europe/Warsaw": [
            "1:24 - LMT 1880 1:24",
            "1:24 - WMT 1915_7_5 1:24",
            "1 C-Eur CE%sT 1918_8_16_3 2",
            "2 Poland EE%sT 1922_5 2",
            "1 Poland CE%sT 1940_5_23_2 1",
            "1 C-Eur CE%sT 1944_9 2",
            "1 Poland CE%sT 1977 1",
            "1 W-Eur CE%sT 1988 1",
            "1 EU CE%sT"
        ],
        "Europe/Zaporozhye": [
            "2:20:40 - LMT 1880 2:20:40",
            "2:20 - CUT 1924_4_2 2:20",
            "2 - EET 1930_5_21 2",
            "3 - MSK 1941_7_25 3",
            "1 C-Eur CE%sT 1943_9_25 1",
            "3 Russia MSK/MSD 1991_2_31_2 3",
            "2 E-Eur EE%sT 1995 2",
            "2 EU EE%sT"
        ],
        "Indian/Antananarivo": [
            "3:10:4 - LMT 1911_6 3:10:4",
            "3 - EAT 1954_1_27_23 3",
            "4 - EAST 1954_4_29_23 3",
            "3 - EAT"
        ],
        "Indian/Chagos": [
            "4:49:40 - LMT 1907 4:49:40",
            "5 - IOT 1996 5",
            "6 - IOT"
        ],
        "Indian/Christmas": [
            "7:2:52 - LMT 1895_1 7:2:52",
            "7 - CXT"
        ],
        "Indian/Cocos": [
            "6:27:40 - LMT 1900 6:27:40",
            "6:30 - CCT"
        ],
        "Indian/Comoro": [
            "2:53:4 - LMT 1911_6 2:53:4",
            "3 - EAT"
        ],
        "Indian/Kerguelen": [
            "0 - zzz 1950",
            "5 - TFT"
        ],
        "Indian/Mahe": [
            "3:41:48 - LMT 1906_5 3:41:48",
            "4 - SCT"
        ],
        "Indian/Maldives": [
            "4:54 - LMT 1880 4:54",
            "4:54 - MMT 1960 4:54",
            "5 - MVT"
        ],
        "Indian/Mauritius": [
            "3:50 - LMT 1907 3:50",
            "4 Mauritius MU%sT"
        ],
        "Indian/Mayotte": [
            "3:0:56 - LMT 1911_6 3:0:56",
            "3 - EAT"
        ],
        "Indian/Reunion": [
            "3:41:52 - LMT 1911_5 3:41:52",
            "4 - RET"
        ],
        "Pacific/Apia": [
            "12:33:4 - LMT 1879_6_5 12:33:4",
            "-11:26:56 - LMT 1911 -11:26:56",
            "-11:30 - SAMT 1950 -11:30",
            "-11 - WST 2010_8_26 -11",
            "-10 - WSDT 2011_3_2_4 -10",
            "-11 - WST 2011_8_24_3 -11",
            "-10 - WSDT 2011_11_30 -10",
            "14 - WSDT 2012_3_1_4 14",
            "13 WS WS%sT"
        ],
        "Pacific/Auckland": [
            "11:39:4 - LMT 1868_10_2 11:39:4",
            "11:30 NZ NZ%sT 1946_0_1 12",
            "12 NZ NZ%sT"
        ],
        "Pacific/Chatham": [
            "12:13:48 - LMT 1957_0_1 12:13:48",
            "12:45 Chatham CHA%sT"
        ],
        "Pacific/Chuuk": [
            "10:7:8 - LMT 1901 10:7:8",
            "10 - CHUT"
        ],
        "Pacific/Easter": [
            "-7:17:44 - LMT 1890 -7:17:44",
            "-7:17:28 - EMT 1932_8 -7:17:28",
            "-7 Chile EAS%sT 1982_2_13_21 -6",
            "-6 Chile EAS%sT"
        ],
        "Pacific/Efate": [
            "11:13:16 - LMT 1912_0_13 11:13:16",
            "11 Vanuatu VU%sT"
        ],
        "Pacific/Enderbury": [
            "-11:24:20 - LMT 1901 -11:24:20",
            "-12 - PHOT 1979_9 -12",
            "-11 - PHOT 1995 -11",
            "13 - PHOT"
        ],
        "Pacific/Fakaofo": [
            "-11:24:56 - LMT 1901 -11:24:56",
            "-11 - TKT 2011_11_30 -11",
            "13 - TKT"
        ],
        "Pacific/Fiji": [
            "11:55:44 - LMT 1915_9_26 11:55:44",
            "12 Fiji FJ%sT"
        ],
        "Pacific/Funafuti": [
            "11:56:52 - LMT 1901 11:56:52",
            "12 - TVT"
        ],
        "Pacific/Galapagos": [
            "-5:58:24 - LMT 1931 -5:58:24",
            "-5 - ECT 1986 -5",
            "-6 - GALT"
        ],
        "Pacific/Gambier": [
            "-8:59:48 - LMT 1912_9 -8:59:48",
            "-9 - GAMT"
        ],
        "Pacific/Guadalcanal": [
            "10:39:48 - LMT 1912_9 10:39:48",
            "11 - SBT"
        ],
        "Pacific/Guam": [
            "-14:21 - LMT 1844_11_31 -14:21",
            "9:39 - LMT 1901 9:39",
            "10 - GST 2000_11_23 10",
            "10 - ChST"
        ],
        "Pacific/Honolulu": [
            "-10:31:26 - LMT 1896_0_13_12 -10:31:26",
            "-10:30 - HST 1933_3_30_2 -10:30",
            "-9:30 - HDT 1933_4_21_12 -9:30",
            "-10:30 - HST 1942_1_09_2 -10:30",
            "-9:30 - HDT 1945_8_30_2 -9:30",
            "-10:30 - HST 1947_5_8_2 -10:30",
            "-10 - HST"
        ],
        "Pacific/Johnston": [
            "-10 - HST"
        ],
        "Pacific/Kiritimati": [
            "-10:29:20 - LMT 1901 -10:29:20",
            "-10:40 - LINT 1979_9 -10:40",
            "-10 - LINT 1995 -10",
            "14 - LINT"
        ],
        "Pacific/Kosrae": [
            "10:51:56 - LMT 1901 10:51:56",
            "11 - KOST 1969_9 11",
            "12 - KOST 1999 12",
            "11 - KOST"
        ],
        "Pacific/Kwajalein": [
            "11:9:20 - LMT 1901 11:9:20",
            "11 - MHT 1969_9 11",
            "-12 - KWAT 1993_7_20 -12",
            "12 - MHT"
        ],
        "Pacific/Majuro": [
            "11:24:48 - LMT 1901 11:24:48",
            "11 - MHT 1969_9 11",
            "12 - MHT"
        ],
        "Pacific/Marquesas": [
            "-9:18 - LMT 1912_9 -9:18",
            "-9:30 - MART"
        ],
        "Pacific/Midway": [
            "-11:49:28 - LMT 1901 -11:49:28",
            "-11 - NST 1956_5_3 -11",
            "-10 - NDT 1956_8_2 -10",
            "-11 - NST 1967_3 -11",
            "-11 - BST 1983_10_30 -11",
            "-11 - SST"
        ],
        "Pacific/Nauru": [
            "11:7:40 - LMT 1921_0_15 11:7:40",
            "11:30 - NRT 1942_2_15 11:30",
            "9 - JST 1944_7_15 9",
            "11:30 - NRT 1979_4 11:30",
            "12 - NRT"
        ],
        "Pacific/Niue": [
            "-11:19:40 - LMT 1901 -11:19:40",
            "-11:20 - NUT 1951 -11:20",
            "-11:30 - NUT 1978_9_1 -11:30",
            "-11 - NUT"
        ],
        "Pacific/Norfolk": [
            "11:11:52 - LMT 1901 11:11:52",
            "11:12 - NMT 1951 11:12",
            "11:30 - NFT"
        ],
        "Pacific/Noumea": [
            "11:5:48 - LMT 1912_0_13 11:5:48",
            "11 NC NC%sT"
        ],
        "Pacific/Pago_Pago": [
            "12:37:12 - LMT 1879_6_5 12:37:12",
            "-11:22:48 - LMT 1911 -11:22:48",
            "-11:30 - SAMT 1950 -11:30",
            "-11 - NST 1967_3 -11",
            "-11 - BST 1983_10_30 -11",
            "-11 - SST"
        ],
        "Pacific/Palau": [
            "8:57:56 - LMT 1901 8:57:56",
            "9 - PWT"
        ],
        "Pacific/Pitcairn": [
            "-8:40:20 - LMT 1901 -8:40:20",
            "-8:30 - PNT 1998_3_27_00 -8:30",
            "-8 - PST"
        ],
        "Pacific/Pohnpei": [
            "10:32:52 - LMT 1901 10:32:52",
            "11 - PONT"
        ],
        "Pacific/Port_Moresby": [
            "9:48:40 - LMT 1880 9:48:40",
            "9:48:32 - PMMT 1895 9:48:32",
            "10 - PGT"
        ],
        "Pacific/Rarotonga": [
            "-10:39:4 - LMT 1901 -10:39:4",
            "-10:30 - CKT 1978_10_12 -10:30",
            "-10 Cook CK%sT"
        ],
        "Pacific/Saipan": [
            "-14:17 - LMT 1844_11_31 -14:17",
            "9:43 - LMT 1901 9:43",
            "9 - MPT 1969_9 9",
            "10 - MPT 2000_11_23 10",
            "10 - ChST"
        ],
        "Pacific/Tahiti": [
            "-9:58:16 - LMT 1912_9 -9:58:16",
            "-10 - TAHT"
        ],
        "Pacific/Tarawa": [
            "11:32:4 - LMT 1901 11:32:4",
            "12 - GILT"
        ],
        "Pacific/Tongatapu": [
            "12:19:20 - LMT 1901 12:19:20",
            "12:20 - TOT 1941 12:20",
            "13 - TOT 1999 13",
            "13 Tonga TO%sT"
        ],
        "Pacific/Wake": [
            "11:6:28 - LMT 1901 11:6:28",
            "12 - WAKT"
        ],
        "Pacific/Wallis": [
            "12:15:20 - LMT 1901 12:15:20",
            "12 - WFT"
        ]
    },
    "rules": {
        "Ghana": [
            "1936 1942 8 1 7 0 0 0:20 GHST",
            "1936 1942 11 31 7 0 0 0 GMT"
        ],
        "Algeria": [
            "1916 1916 5 14 7 23 2 1 S",
            "1916 1919 9 1 0 23 2 0",
            "1917 1917 2 24 7 23 2 1 S",
            "1918 1918 2 9 7 23 2 1 S",
            "1919 1919 2 1 7 23 2 1 S",
            "1920 1920 1 14 7 23 2 1 S",
            "1920 1920 9 23 7 23 2 0",
            "1921 1921 2 14 7 23 2 1 S",
            "1921 1921 5 21 7 23 2 0",
            "1939 1939 8 11 7 23 2 1 S",
            "1939 1939 10 19 7 1 0 0",
            "1944 1945 3 1 1 2 0 1 S",
            "1944 1944 9 8 7 2 0 0",
            "1945 1945 8 16 7 1 0 0",
            "1971 1971 3 25 7 23 2 1 S",
            "1971 1971 8 26 7 23 2 0",
            "1977 1977 4 6 7 0 0 1 S",
            "1977 1977 9 21 7 0 0 0",
            "1978 1978 2 24 7 1 0 1 S",
            "1978 1978 8 22 7 3 0 0",
            "1980 1980 3 25 7 0 0 1 S",
            "1980 1980 9 31 7 2 0 0"
        ],
        "Egypt": [
            "1940 1940 6 15 7 0 0 1 S",
            "1940 1940 9 1 7 0 0 0",
            "1941 1941 3 15 7 0 0 1 S",
            "1941 1941 8 16 7 0 0 0",
            "1942 1944 3 1 7 0 0 1 S",
            "1942 1942 9 27 7 0 0 0",
            "1943 1945 10 1 7 0 0 0",
            "1945 1945 3 16 7 0 0 1 S",
            "1957 1957 4 10 7 0 0 1 S",
            "1957 1958 9 1 7 0 0 0",
            "1958 1958 4 1 7 0 0 1 S",
            "1959 1981 4 1 7 1 0 1 S",
            "1959 1965 8 30 7 3 0 0",
            "1966 1994 9 1 7 3 0 0",
            "1982 1982 6 25 7 1 0 1 S",
            "1983 1983 6 12 7 1 0 1 S",
            "1984 1988 4 1 7 1 0 1 S",
            "1989 1989 4 6 7 1 0 1 S",
            "1990 1994 4 1 7 1 0 1 S",
            "1995 2010 3 5 8 0 2 1 S",
            "1995 2005 8 4 8 23 2 0",
            "2006 2006 8 21 7 23 2 0",
            "2007 2007 8 1 4 23 2 0",
            "2008 2008 7 4 8 23 2 0",
            "2009 2009 7 20 7 23 2 0",
            "2010 2010 7 11 7 0 0 0",
            "2010 2010 8 10 7 0 0 1 S",
            "2010 2010 8 4 8 23 2 0"
        ],
        "Morocco": [
            "1939 1939 8 12 7 0 0 1 S",
            "1939 1939 10 19 7 0 0 0",
            "1940 1940 1 25 7 0 0 1 S",
            "1945 1945 10 18 7 0 0 0",
            "1950 1950 5 11 7 0 0 1 S",
            "1950 1950 9 29 7 0 0 0",
            "1967 1967 5 3 7 12 0 1 S",
            "1967 1967 9 1 7 0 0 0",
            "1974 1974 5 24 7 0 0 1 S",
            "1974 1974 8 1 7 0 0 0",
            "1976 1977 4 1 7 0 0 1 S",
            "1976 1976 7 1 7 0 0 0",
            "1977 1977 8 28 7 0 0 0",
            "1978 1978 5 1 7 0 0 1 S",
            "1978 1978 7 4 7 0 0 0",
            "2008 2008 5 1 7 0 0 1 S",
            "2008 2008 8 1 7 0 0 0",
            "2009 2009 5 1 7 0 0 1 S",
            "2009 2009 7 21 7 0 0 0",
            "2010 2010 4 2 7 0 0 1 S",
            "2010 2010 7 8 7 0 0 0",
            "2011 2011 3 3 7 0 0 1 S",
            "2011 2011 6 31 7 0 0 0",
            "2012 2019 3 0 8 2 0 1 S",
            "2012 9999 8 0 8 3 0 0",
            "2012 2012 6 20 7 3 0 0",
            "2012 2012 7 20 7 2 0 1 S",
            "2013 2013 6 9 7 3 0 0",
            "2013 2013 7 8 7 2 0 1 S",
            "2014 2014 5 29 7 3 0 0",
            "2014 2014 6 29 7 2 0 1 S",
            "2015 2015 5 18 7 3 0 0",
            "2015 2015 6 18 7 2 0 1 S",
            "2016 2016 5 7 7 3 0 0",
            "2016 2016 6 7 7 2 0 1 S",
            "2017 2017 4 27 7 3 0 0",
            "2017 2017 5 26 7 2 0 1 S",
            "2018 2018 4 16 7 3 0 0",
            "2018 2018 5 15 7 2 0 1 S",
            "2019 2019 4 6 7 3 0 0",
            "2019 2019 5 5 7 2 0 1 S",
            "2020 2020 4 24 7 2 0 1 S",
            "2021 2021 4 13 7 2 0 1 S",
            "2022 2022 4 3 7 2 0 1 S",
            "2023 9999 3 0 8 2 0 1 S"
        ],
        "Spain": [
            "1917 1917 4 5 7 23 2 1 S",
            "1917 1919 9 6 7 23 2 0",
            "1918 1918 3 15 7 23 2 1 S",
            "1919 1919 3 5 7 23 2 1 S",
            "1924 1924 3 16 7 23 2 1 S",
            "1924 1924 9 4 7 23 2 0",
            "1926 1926 3 17 7 23 2 1 S",
            "1926 1929 9 1 6 23 2 0",
            "1927 1927 3 9 7 23 2 1 S",
            "1928 1928 3 14 7 23 2 1 S",
            "1929 1929 3 20 7 23 2 1 S",
            "1937 1937 4 22 7 23 2 1 S",
            "1937 1939 9 1 6 23 2 0",
            "1938 1938 2 22 7 23 2 1 S",
            "1939 1939 3 15 7 23 2 1 S",
            "1940 1940 2 16 7 23 2 1 S",
            "1942 1942 4 2 7 22 2 2 M",
            "1942 1942 8 1 7 22 2 1 S",
            "1943 1946 3 13 6 22 2 2 M",
            "1943 1943 9 3 7 22 2 1 S",
            "1944 1944 9 10 7 22 2 1 S",
            "1945 1945 8 30 7 1 0 1 S",
            "1946 1946 8 30 7 0 0 0",
            "1949 1949 3 30 7 23 0 1 S",
            "1949 1949 8 30 7 1 0 0",
            "1974 1975 3 13 6 23 0 1 S",
            "1974 1975 9 1 0 1 0 0",
            "1976 1976 2 27 7 23 0 1 S",
            "1976 1977 8 0 8 1 0 0",
            "1977 1978 3 2 7 23 0 1 S",
            "1978 1978 9 1 7 1 0 0"
        ],
        "SpainAfrica": [
            "1967 1967 5 3 7 12 0 1 S",
            "1967 1967 9 1 7 0 0 0",
            "1974 1974 5 24 7 0 0 1 S",
            "1974 1974 8 1 7 0 0 0",
            "1976 1977 4 1 7 0 0 1 S",
            "1976 1976 7 1 7 0 0 0",
            "1977 1977 8 28 7 0 0 0",
            "1978 1978 5 1 7 0 0 1 S",
            "1978 1978 7 4 7 0 0 0"
        ],
        "EU": [
            "1977 1980 3 1 0 1 1 1 S",
            "1977 1977 8 0 8 1 1 0",
            "1978 1978 9 1 7 1 1 0",
            "1979 1995 8 0 8 1 1 0",
            "1981 9999 2 0 8 1 1 1 S",
            "1996 9999 9 0 8 1 1 0"
        ],
        "SL": [
            "1935 1942 5 1 7 0 0 0:40 SLST",
            "1935 1942 9 1 7 0 0 0 WAT",
            "1957 1962 5 1 7 0 0 1 SLST",
            "1957 1962 8 1 7 0 0 0 GMT"
        ],
        "SA": [
            "1942 1943 8 15 0 2 0 1",
            "1943 1944 2 15 0 2 0 0"
        ],
        "Sudan": [
            "1970 1970 4 1 7 0 0 1 S",
            "1970 1985 9 15 7 0 0 0",
            "1971 1971 3 30 7 0 0 1 S",
            "1972 1985 3 0 8 0 0 1 S"
        ],
        "Libya": [
            "1951 1951 9 14 7 2 0 1 S",
            "1952 1952 0 1 7 0 0 0",
            "1953 1953 9 9 7 2 0 1 S",
            "1954 1954 0 1 7 0 0 0",
            "1955 1955 8 30 7 0 0 1 S",
            "1956 1956 0 1 7 0 0 0",
            "1982 1984 3 1 7 0 0 1 S",
            "1982 1985 9 1 7 0 0 0",
            "1985 1985 3 6 7 0 0 1 S",
            "1986 1986 3 4 7 0 0 1 S",
            "1986 1986 9 3 7 0 0 0",
            "1987 1989 3 1 7 0 0 1 S",
            "1987 1989 9 1 7 0 0 0",
            "1997 1997 3 4 7 0 0 1 S",
            "1997 1997 9 4 7 0 0 0",
            "2013 9999 2 5 8 1 0 1 S",
            "2013 9999 9 5 8 2 0 0"
        ],
        "Tunisia": [
            "1939 1939 3 15 7 23 2 1 S",
            "1939 1939 10 18 7 23 2 0",
            "1940 1940 1 25 7 23 2 1 S",
            "1941 1941 9 6 7 0 0 0",
            "1942 1942 2 9 7 0 0 1 S",
            "1942 1942 10 2 7 3 0 0",
            "1943 1943 2 29 7 2 0 1 S",
            "1943 1943 3 17 7 2 0 0",
            "1943 1943 3 25 7 2 0 1 S",
            "1943 1943 9 4 7 2 0 0",
            "1944 1945 3 1 1 2 0 1 S",
            "1944 1944 9 8 7 0 0 0",
            "1945 1945 8 16 7 0 0 0",
            "1977 1977 3 30 7 0 2 1 S",
            "1977 1977 8 24 7 0 2 0",
            "1978 1978 4 1 7 0 2 1 S",
            "1978 1978 9 1 7 0 2 0",
            "1988 1988 5 1 7 0 2 1 S",
            "1988 1990 8 0 8 0 2 0",
            "1989 1989 2 26 7 0 2 1 S",
            "1990 1990 4 1 7 0 2 1 S",
            "2005 2005 4 1 7 0 2 1 S",
            "2005 2005 8 30 7 1 2 0",
            "2006 2008 2 0 8 2 2 1 S",
            "2006 2008 9 0 8 2 2 0"
        ],
        "Namibia": [
            "1994 9999 8 1 0 2 0 1 S",
            "1995 9999 3 1 0 2 0 0"
        ],
        "US": [
            "1918 1919 2 0 8 2 0 1 D",
            "1918 1919 9 0 8 2 0 0 S",
            "1942 1942 1 9 7 2 0 1 W",
            "1945 1945 7 14 7 23 1 1 P",
            "1945 1945 8 30 7 2 0 0 S",
            "1967 2006 9 0 8 2 0 0 S",
            "1967 1973 3 0 8 2 0 1 D",
            "1974 1974 0 6 7 2 0 1 D",
            "1975 1975 1 23 7 2 0 1 D",
            "1976 1986 3 0 8 2 0 1 D",
            "1987 2006 3 1 0 2 0 1 D",
            "2007 9999 2 8 0 2 0 1 D",
            "2007 9999 10 1 0 2 0 0 S"
        ],
        "Brazil": [
            "1931 1931 9 3 7 11 0 1 S",
            "1932 1933 3 1 7 0 0 0",
            "1932 1932 9 3 7 0 0 1 S",
            "1949 1952 11 1 7 0 0 1 S",
            "1950 1950 3 16 7 1 0 0",
            "1951 1952 3 1 7 0 0 0",
            "1953 1953 2 1 7 0 0 0",
            "1963 1963 11 9 7 0 0 1 S",
            "1964 1964 2 1 7 0 0 0",
            "1965 1965 0 31 7 0 0 1 S",
            "1965 1965 2 31 7 0 0 0",
            "1965 1965 11 1 7 0 0 1 S",
            "1966 1968 2 1 7 0 0 0",
            "1966 1967 10 1 7 0 0 1 S",
            "1985 1985 10 2 7 0 0 1 S",
            "1986 1986 2 15 7 0 0 0",
            "1986 1986 9 25 7 0 0 1 S",
            "1987 1987 1 14 7 0 0 0",
            "1987 1987 9 25 7 0 0 1 S",
            "1988 1988 1 7 7 0 0 0",
            "1988 1988 9 16 7 0 0 1 S",
            "1989 1989 0 29 7 0 0 0",
            "1989 1989 9 15 7 0 0 1 S",
            "1990 1990 1 11 7 0 0 0",
            "1990 1990 9 21 7 0 0 1 S",
            "1991 1991 1 17 7 0 0 0",
            "1991 1991 9 20 7 0 0 1 S",
            "1992 1992 1 9 7 0 0 0",
            "1992 1992 9 25 7 0 0 1 S",
            "1993 1993 0 31 7 0 0 0",
            "1993 1995 9 11 0 0 0 1 S",
            "1994 1995 1 15 0 0 0 0",
            "1996 1996 1 11 7 0 0 0",
            "1996 1996 9 6 7 0 0 1 S",
            "1997 1997 1 16 7 0 0 0",
            "1997 1997 9 6 7 0 0 1 S",
            "1998 1998 2 1 7 0 0 0",
            "1998 1998 9 11 7 0 0 1 S",
            "1999 1999 1 21 7 0 0 0",
            "1999 1999 9 3 7 0 0 1 S",
            "2000 2000 1 27 7 0 0 0",
            "2000 2001 9 8 0 0 0 1 S",
            "2001 2006 1 15 0 0 0 0",
            "2002 2002 10 3 7 0 0 1 S",
            "2003 2003 9 19 7 0 0 1 S",
            "2004 2004 10 2 7 0 0 1 S",
            "2005 2005 9 16 7 0 0 1 S",
            "2006 2006 10 5 7 0 0 1 S",
            "2007 2007 1 25 7 0 0 0",
            "2007 2007 9 8 0 0 0 1 S",
            "2008 9999 9 15 0 0 0 1 S",
            "2008 2011 1 15 0 0 0 0",
            "2012 2012 1 22 0 0 0 0",
            "2013 2014 1 15 0 0 0 0",
            "2015 2015 1 22 0 0 0 0",
            "2016 2022 1 15 0 0 0 0",
            "2023 2023 1 22 0 0 0 0",
            "2024 2025 1 15 0 0 0 0",
            "2026 2026 1 22 0 0 0 0",
            "2027 2033 1 15 0 0 0 0",
            "2034 2034 1 22 0 0 0 0",
            "2035 2036 1 15 0 0 0 0",
            "2037 2037 1 22 0 0 0 0",
            "2038 9999 1 15 0 0 0 0"
        ],
        "Arg": [
            "1930 1930 11 1 7 0 0 1 S",
            "1931 1931 3 1 7 0 0 0",
            "1931 1931 9 15 7 0 0 1 S",
            "1932 1940 2 1 7 0 0 0",
            "1932 1939 10 1 7 0 0 1 S",
            "1940 1940 6 1 7 0 0 1 S",
            "1941 1941 5 15 7 0 0 0",
            "1941 1941 9 15 7 0 0 1 S",
            "1943 1943 7 1 7 0 0 0",
            "1943 1943 9 15 7 0 0 1 S",
            "1946 1946 2 1 7 0 0 0",
            "1946 1946 9 1 7 0 0 1 S",
            "1963 1963 9 1 7 0 0 0",
            "1963 1963 11 15 7 0 0 1 S",
            "1964 1966 2 1 7 0 0 0",
            "1964 1966 9 15 7 0 0 1 S",
            "1967 1967 3 2 7 0 0 0",
            "1967 1968 9 1 0 0 0 1 S",
            "1968 1969 3 1 0 0 0 0",
            "1974 1974 0 23 7 0 0 1 S",
            "1974 1974 4 1 7 0 0 0",
            "1988 1988 11 1 7 0 0 1 S",
            "1989 1993 2 1 0 0 0 0",
            "1989 1992 9 15 0 0 0 1 S",
            "1999 1999 9 1 0 0 0 1 S",
            "2000 2000 2 3 7 0 0 0",
            "2007 2007 11 30 7 0 0 1 S",
            "2008 2009 2 15 0 0 0 0",
            "2008 2008 9 15 0 0 0 1 S"
        ],
        "SanLuis": [
            "2008 2009 2 8 0 0 0 0",
            "2007 2009 9 8 0 0 0 1 S"
        ],
        "Para": [
            "1975 1988 9 1 7 0 0 1 S",
            "1975 1978 2 1 7 0 0 0",
            "1979 1991 3 1 7 0 0 0",
            "1989 1989 9 22 7 0 0 1 S",
            "1990 1990 9 1 7 0 0 1 S",
            "1991 1991 9 6 7 0 0 1 S",
            "1992 1992 2 1 7 0 0 0",
            "1992 1992 9 5 7 0 0 1 S",
            "1993 1993 2 31 7 0 0 0",
            "1993 1995 9 1 7 0 0 1 S",
            "1994 1995 1 0 8 0 0 0",
            "1996 1996 2 1 7 0 0 0",
            "1996 2001 9 1 0 0 0 1 S",
            "1997 1997 1 0 8 0 0 0",
            "1998 2001 2 1 0 0 0 0",
            "2002 2004 3 1 0 0 0 0",
            "2002 2003 8 1 0 0 0 1 S",
            "2004 2009 9 15 0 0 0 1 S",
            "2005 2009 2 8 0 0 0 0",
            "2010 9999 9 1 0 0 0 1 S",
            "2010 2012 3 8 0 0 0 0",
            "2013 9999 2 22 0 0 0 0"
        ],
        "Canada": [
            "1918 1918 3 14 7 2 0 1 D",
            "1918 1918 9 27 7 2 0 0 S",
            "1942 1942 1 9 7 2 0 1 W",
            "1945 1945 7 14 7 23 1 1 P",
            "1945 1945 8 30 7 2 0 0 S",
            "1974 1986 3 0 8 2 0 1 D",
            "1974 2006 9 0 8 2 0 0 S",
            "1987 2006 3 1 0 2 0 1 D",
            "2007 9999 2 8 0 2 0 1 D",
            "2007 9999 10 1 0 2 0 0 S"
        ],
        "Mexico": [
            "1939 1939 1 5 7 0 0 1 D",
            "1939 1939 5 25 7 0 0 0 S",
            "1940 1940 11 9 7 0 0 1 D",
            "1941 1941 3 1 7 0 0 0 S",
            "1943 1943 11 16 7 0 0 1 W",
            "1944 1944 4 1 7 0 0 0 S",
            "1950 1950 1 12 7 0 0 1 D",
            "1950 1950 6 30 7 0 0 0 S",
            "1996 2000 3 1 0 2 0 1 D",
            "1996 2000 9 0 8 2 0 0 S",
            "2001 2001 4 1 0 2 0 1 D",
            "2001 2001 8 0 8 2 0 0 S",
            "2002 9999 3 1 0 2 0 1 D",
            "2002 9999 9 0 8 2 0 0 S"
        ],
        "Barb": [
            "1977 1977 5 12 7 2 0 1 D",
            "1977 1978 9 1 0 2 0 0 S",
            "1978 1980 3 15 0 2 0 1 D",
            "1979 1979 8 30 7 2 0 0 S",
            "1980 1980 8 25 7 2 0 0 S"
        ],
        "Belize": [
            "1918 1942 9 2 0 0 0 0:30 HD",
            "1919 1943 1 9 0 0 0 0 S",
            "1973 1973 11 5 7 0 0 1 D",
            "1974 1974 1 9 7 0 0 0 S",
            "1982 1982 11 18 7 0 0 1 D",
            "1983 1983 1 12 7 0 0 0 S"
        ],
        "CO": [
            "1992 1992 4 3 7 0 0 1 S",
            "1993 1993 3 4 7 0 0 0"
        ],
        "NT_YK": [
            "1918 1918 3 14 7 2 0 1 D",
            "1918 1918 9 27 7 2 0 0 S",
            "1919 1919 4 25 7 2 0 1 D",
            "1919 1919 10 1 7 0 0 0 S",
            "1942 1942 1 9 7 2 0 1 W",
            "1945 1945 7 14 7 23 1 1 P",
            "1945 1945 8 30 7 2 0 0 S",
            "1965 1965 3 0 8 0 0 2 DD",
            "1965 1965 9 0 8 2 0 0 S",
            "1980 1986 3 0 8 2 0 1 D",
            "1980 2006 9 0 8 2 0 0 S",
            "1987 2006 3 1 0 2 0 1 D"
        ],
        "Chicago": [
            "1920 1920 5 13 7 2 0 1 D",
            "1920 1921 9 0 8 2 0 0 S",
            "1921 1921 2 0 8 2 0 1 D",
            "1922 1966 3 0 8 2 0 1 D",
            "1922 1954 8 0 8 2 0 0 S",
            "1955 1966 9 0 8 2 0 0 S"
        ],
        "CR": [
            "1979 1980 1 0 8 0 0 1 D",
            "1979 1980 5 1 0 0 0 0 S",
            "1991 1992 0 15 6 0 0 1 D",
            "1991 1991 6 1 7 0 0 0 S",
            "1992 1992 2 15 7 0 0 0 S"
        ],
        "Vanc": [
            "1918 1918 3 14 7 2 0 1 D",
            "1918 1918 9 27 7 2 0 0 S",
            "1942 1942 1 9 7 2 0 1 W",
            "1945 1945 7 14 7 23 1 1 P",
            "1945 1945 8 30 7 2 0 0 S",
            "1946 1986 3 0 8 2 0 1 D",
            "1946 1946 9 13 7 2 0 0 S",
            "1947 1961 8 0 8 2 0 0 S",
            "1962 2006 9 0 8 2 0 0 S"
        ],
        "Denver": [
            "1920 1921 2 0 8 2 0 1 D",
            "1920 1920 9 0 8 2 0 0 S",
            "1921 1921 4 22 7 2 0 0 S",
            "1965 1966 3 0 8 2 0 1 D",
            "1965 1966 9 0 8 2 0 0 S"
        ],
        "Detroit": [
            "1948 1948 3 0 8 2 0 1 D",
            "1948 1948 8 0 8 2 0 0 S",
            "1967 1967 5 14 7 2 0 1 D",
            "1967 1967 9 0 8 2 0 0 S"
        ],
        "Edm": [
            "1918 1919 3 8 0 2 0 1 D",
            "1918 1918 9 27 7 2 0 0 S",
            "1919 1919 4 27 7 2 0 0 S",
            "1920 1923 3 0 8 2 0 1 D",
            "1920 1920 9 0 8 2 0 0 S",
            "1921 1923 8 0 8 2 0 0 S",
            "1942 1942 1 9 7 2 0 1 W",
            "1945 1945 7 14 7 23 1 1 P",
            "1945 1945 8 0 8 2 0 0 S",
            "1947 1947 3 0 8 2 0 1 D",
            "1947 1947 8 0 8 2 0 0 S",
            "1967 1967 3 0 8 2 0 1 D",
            "1967 1967 9 0 8 2 0 0 S",
            "1969 1969 3 0 8 2 0 1 D",
            "1969 1969 9 0 8 2 0 0 S",
            "1972 1986 3 0 8 2 0 1 D",
            "1972 2006 9 0 8 2 0 0 S"
        ],
        "Salv": [
            "1987 1988 4 1 0 0 0 1 D",
            "1987 1988 8 0 8 0 0 0 S"
        ],
        "Halifax": [
            "1916 1916 3 1 7 0 0 1 D",
            "1916 1916 9 1 7 0 0 0 S",
            "1920 1920 4 9 7 0 0 1 D",
            "1920 1920 7 29 7 0 0 0 S",
            "1921 1921 4 6 7 0 0 1 D",
            "1921 1922 8 5 7 0 0 0 S",
            "1922 1922 3 30 7 0 0 1 D",
            "1923 1925 4 1 0 0 0 1 D",
            "1923 1923 8 4 7 0 0 0 S",
            "1924 1924 8 15 7 0 0 0 S",
            "1925 1925 8 28 7 0 0 0 S",
            "1926 1926 4 16 7 0 0 1 D",
            "1926 1926 8 13 7 0 0 0 S",
            "1927 1927 4 1 7 0 0 1 D",
            "1927 1927 8 26 7 0 0 0 S",
            "1928 1931 4 8 0 0 0 1 D",
            "1928 1928 8 9 7 0 0 0 S",
            "1929 1929 8 3 7 0 0 0 S",
            "1930 1930 8 15 7 0 0 0 S",
            "1931 1932 8 24 1 0 0 0 S",
            "1932 1932 4 1 7 0 0 1 D",
            "1933 1933 3 30 7 0 0 1 D",
            "1933 1933 9 2 7 0 0 0 S",
            "1934 1934 4 20 7 0 0 1 D",
            "1934 1934 8 16 7 0 0 0 S",
            "1935 1935 5 2 7 0 0 1 D",
            "1935 1935 8 30 7 0 0 0 S",
            "1936 1936 5 1 7 0 0 1 D",
            "1936 1936 8 14 7 0 0 0 S",
            "1937 1938 4 1 0 0 0 1 D",
            "1937 1941 8 24 1 0 0 0 S",
            "1939 1939 4 28 7 0 0 1 D",
            "1940 1941 4 1 0 0 0 1 D",
            "1946 1949 3 0 8 2 0 1 D",
            "1946 1949 8 0 8 2 0 0 S",
            "1951 1954 3 0 8 2 0 1 D",
            "1951 1954 8 0 8 2 0 0 S",
            "1956 1959 3 0 8 2 0 1 D",
            "1956 1959 8 0 8 2 0 0 S",
            "1962 1973 3 0 8 2 0 1 D",
            "1962 1973 9 0 8 2 0 0 S"
        ],
        "StJohns": [
            "1917 1917 3 8 7 2 0 1 D",
            "1917 1917 8 17 7 2 0 0 S",
            "1919 1919 4 5 7 23 0 1 D",
            "1919 1919 7 12 7 23 0 0 S",
            "1920 1935 4 1 0 23 0 1 D",
            "1920 1935 9 0 8 23 0 0 S",
            "1936 1941 4 9 1 0 0 1 D",
            "1936 1941 9 2 1 0 0 0 S",
            "1946 1950 4 8 0 2 0 1 D",
            "1946 1950 9 2 0 2 0 0 S",
            "1951 1986 3 0 8 2 0 1 D",
            "1951 1959 8 0 8 2 0 0 S",
            "1960 1986 9 0 8 2 0 0 S",
            "1987 1987 3 1 0 0:1 0 1 D",
            "1987 2006 9 0 8 0:1 0 0 S",
            "1988 1988 3 1 0 0:1 0 2 DD",
            "1989 2006 3 1 0 0:1 0 1 D",
            "2007 2011 2 8 0 0:1 0 1 D",
            "2007 2010 10 1 0 0:1 0 0 S"
        ],
        "TC": [
            "1979 1986 3 0 8 2 0 1 D",
            "1979 2006 9 0 8 2 0 0 S",
            "1987 2006 3 1 0 2 0 1 D",
            "2007 9999 2 8 0 2 0 1 D",
            "2007 9999 10 1 0 2 0 0 S"
        ],
        "Guat": [
            "1973 1973 10 25 7 0 0 1 D",
            "1974 1974 1 24 7 0 0 0 S",
            "1983 1983 4 21 7 0 0 1 D",
            "1983 1983 8 22 7 0 0 0 S",
            "1991 1991 2 23 7 0 0 1 D",
            "1991 1991 8 7 7 0 0 0 S",
            "2006 2006 3 30 7 0 0 1 D",
            "2006 2006 9 1 7 0 0 0 S"
        ],
        "Cuba": [
            "1928 1928 5 10 7 0 0 1 D",
            "1928 1928 9 10 7 0 0 0 S",
            "1940 1942 5 1 0 0 0 1 D",
            "1940 1942 8 1 0 0 0 0 S",
            "1945 1946 5 1 0 0 0 1 D",
            "1945 1946 8 1 0 0 0 0 S",
            "1965 1965 5 1 7 0 0 1 D",
            "1965 1965 8 30 7 0 0 0 S",
            "1966 1966 4 29 7 0 0 1 D",
            "1966 1966 9 2 7 0 0 0 S",
            "1967 1967 3 8 7 0 0 1 D",
            "1967 1968 8 8 0 0 0 0 S",
            "1968 1968 3 14 7 0 0 1 D",
            "1969 1977 3 0 8 0 0 1 D",
            "1969 1971 9 0 8 0 0 0 S",
            "1972 1974 9 8 7 0 0 0 S",
            "1975 1977 9 0 8 0 0 0 S",
            "1978 1978 4 7 7 0 0 1 D",
            "1978 1990 9 8 0 0 0 0 S",
            "1979 1980 2 15 0 0 0 1 D",
            "1981 1985 4 5 0 0 0 1 D",
            "1986 1989 2 14 0 0 0 1 D",
            "1990 1997 3 1 0 0 0 1 D",
            "1991 1995 9 8 0 0 2 0 S",
            "1996 1996 9 6 7 0 2 0 S",
            "1997 1997 9 12 7 0 2 0 S",
            "1998 1999 2 0 8 0 2 1 D",
            "1998 2003 9 0 8 0 2 0 S",
            "2000 2004 3 1 0 0 2 1 D",
            "2006 2010 9 0 8 0 2 0 S",
            "2007 2007 2 8 0 0 2 1 D",
            "2008 2008 2 15 0 0 2 1 D",
            "2009 2010 2 8 0 0 2 1 D",
            "2011 2011 2 15 0 0 2 1 D",
            "2011 2011 10 13 7 0 2 0 S",
            "2012 2012 3 1 7 0 2 1 D",
            "2012 9999 10 1 0 0 2 0 S",
            "2013 9999 2 8 0 0 2 1 D"
        ],
        "Indianapolis": [
            "1941 1941 5 22 7 2 0 1 D",
            "1941 1954 8 0 8 2 0 0 S",
            "1946 1954 3 0 8 2 0 1 D"
        ],
        "Starke": [
            "1947 1961 3 0 8 2 0 1 D",
            "1947 1954 8 0 8 2 0 0 S",
            "1955 1956 9 0 8 2 0 0 S",
            "1957 1958 8 0 8 2 0 0 S",
            "1959 1961 9 0 8 2 0 0 S"
        ],
        "Marengo": [
            "1951 1951 3 0 8 2 0 1 D",
            "1951 1951 8 0 8 2 0 0 S",
            "1954 1960 3 0 8 2 0 1 D",
            "1954 1960 8 0 8 2 0 0 S"
        ],
        "Pike": [
            "1955 1955 4 1 7 0 0 1 D",
            "1955 1960 8 0 8 2 0 0 S",
            "1956 1964 3 0 8 2 0 1 D",
            "1961 1964 9 0 8 2 0 0 S"
        ],
        "Perry": [
            "1946 1946 3 0 8 2 0 1 D",
            "1946 1946 8 0 8 2 0 0 S",
            "1953 1954 3 0 8 2 0 1 D",
            "1953 1959 8 0 8 2 0 0 S",
            "1955 1955 4 1 7 0 0 1 D",
            "1956 1963 3 0 8 2 0 1 D",
            "1960 1960 9 0 8 2 0 0 S",
            "1961 1961 8 0 8 2 0 0 S",
            "1962 1963 9 0 8 2 0 0 S"
        ],
        "Vincennes": [
            "1946 1946 3 0 8 2 0 1 D",
            "1946 1946 8 0 8 2 0 0 S",
            "1953 1954 3 0 8 2 0 1 D",
            "1953 1959 8 0 8 2 0 0 S",
            "1955 1955 4 1 7 0 0 1 D",
            "1956 1963 3 0 8 2 0 1 D",
            "1960 1960 9 0 8 2 0 0 S",
            "1961 1961 8 0 8 2 0 0 S",
            "1962 1963 9 0 8 2 0 0 S"
        ],
        "Pulaski": [
            "1946 1960 3 0 8 2 0 1 D",
            "1946 1954 8 0 8 2 0 0 S",
            "1955 1956 9 0 8 2 0 0 S",
            "1957 1960 8 0 8 2 0 0 S"
        ],
        "Louisville": [
            "1921 1921 4 1 7 2 0 1 D",
            "1921 1921 8 1 7 2 0 0 S",
            "1941 1961 3 0 8 2 0 1 D",
            "1941 1941 8 0 8 2 0 0 S",
            "1946 1946 5 2 7 2 0 0 S",
            "1950 1955 8 0 8 2 0 0 S",
            "1956 1960 9 0 8 2 0 0 S"
        ],
        "Peru": [
            "1938 1938 0 1 7 0 0 1 S",
            "1938 1938 3 1 7 0 0 0",
            "1938 1939 8 0 8 0 0 1 S",
            "1939 1940 2 24 0 0 0 0",
            "1986 1987 0 1 7 0 0 1 S",
            "1986 1987 3 1 7 0 0 0",
            "1990 1990 0 1 7 0 0 1 S",
            "1990 1990 3 1 7 0 0 0",
            "1994 1994 0 1 7 0 0 1 S",
            "1994 1994 3 1 7 0 0 0"
        ],
        "CA": [
            "1948 1948 2 14 7 2 0 1 D",
            "1949 1949 0 1 7 2 0 0 S",
            "1950 1966 3 0 8 2 0 1 D",
            "1950 1961 8 0 8 2 0 0 S",
            "1962 1966 9 0 8 2 0 0 S"
        ],
        "Nic": [
            "1979 1980 2 16 0 0 0 1 D",
            "1979 1980 5 23 1 0 0 0 S",
            "2005 2005 3 10 7 0 0 1 D",
            "2005 2005 9 1 0 0 0 0 S",
            "2006 2006 3 30 7 2 0 1 D",
            "2006 2006 9 1 0 1 0 0 S"
        ],
        "Menominee": [
            "1946 1946 3 0 8 2 0 1 D",
            "1946 1946 8 0 8 2 0 0 S",
            "1966 1966 3 0 8 2 0 1 D",
            "1966 1966 9 0 8 2 0 0 S"
        ],
        "Moncton": [
            "1933 1935 5 8 0 1 0 1 D",
            "1933 1935 8 8 0 1 0 0 S",
            "1936 1938 5 1 0 1 0 1 D",
            "1936 1938 8 1 0 1 0 0 S",
            "1939 1939 4 27 7 1 0 1 D",
            "1939 1941 8 21 6 1 0 0 S",
            "1940 1940 4 19 7 1 0 1 D",
            "1941 1941 4 4 7 1 0 1 D",
            "1946 1972 3 0 8 2 0 1 D",
            "1946 1956 8 0 8 2 0 0 S",
            "1957 1972 9 0 8 2 0 0 S",
            "1993 2006 3 1 0 0:1 0 1 D",
            "1993 2006 9 0 8 0:1 0 0 S"
        ],
        "Uruguay": [
            "1923 1923 9 2 7 0 0 0:30 HS",
            "1924 1926 3 1 7 0 0 0",
            "1924 1925 9 1 7 0 0 0:30 HS",
            "1933 1935 9 0 8 0 0 0:30 HS",
            "1934 1936 2 25 6 23:30 2 0",
            "1936 1936 10 1 7 0 0 0:30 HS",
            "1937 1941 2 0 8 0 0 0",
            "1937 1940 9 0 8 0 0 0:30 HS",
            "1941 1941 7 1 7 0 0 0:30 HS",
            "1942 1942 0 1 7 0 0 0",
            "1942 1942 11 14 7 0 0 1 S",
            "1943 1943 2 14 7 0 0 0",
            "1959 1959 4 24 7 0 0 1 S",
            "1959 1959 10 15 7 0 0 0",
            "1960 1960 0 17 7 0 0 1 S",
            "1960 1960 2 6 7 0 0 0",
            "1965 1967 3 1 0 0 0 1 S",
            "1965 1965 8 26 7 0 0 0",
            "1966 1967 9 31 7 0 0 0",
            "1968 1970 4 27 7 0 0 0:30 HS",
            "1968 1970 11 2 7 0 0 0",
            "1972 1972 3 24 7 0 0 1 S",
            "1972 1972 7 15 7 0 0 0",
            "1974 1974 2 10 7 0 0 0:30 HS",
            "1974 1974 11 22 7 0 0 1 S",
            "1976 1976 9 1 7 0 0 0",
            "1977 1977 11 4 7 0 0 1 S",
            "1978 1978 3 1 7 0 0 0",
            "1979 1979 9 1 7 0 0 1 S",
            "1980 1980 4 1 7 0 0 0",
            "1987 1987 11 14 7 0 0 1 S",
            "1988 1988 2 14 7 0 0 0",
            "1988 1988 11 11 7 0 0 1 S",
            "1989 1989 2 12 7 0 0 0",
            "1989 1989 9 29 7 0 0 1 S",
            "1990 1992 2 1 0 0 0 0",
            "1990 1991 9 21 0 0 0 1 S",
            "1992 1992 9 18 7 0 0 1 S",
            "1993 1993 1 28 7 0 0 0",
            "2004 2004 8 19 7 0 0 1 S",
            "2005 2005 2 27 7 2 0 0",
            "2005 2005 9 9 7 2 0 1 S",
            "2006 2006 2 12 7 2 0 0",
            "2006 9999 9 1 0 2 0 1 S",
            "2007 9999 2 8 0 2 0 0"
        ],
        "Mont": [
            "1917 1917 2 25 7 2 0 1 D",
            "1917 1917 3 24 7 0 0 0 S",
            "1919 1919 2 31 7 2:30 0 1 D",
            "1919 1919 9 25 7 2:30 0 0 S",
            "1920 1920 4 2 7 2:30 0 1 D",
            "1920 1922 9 1 0 2:30 0 0 S",
            "1921 1921 4 1 7 2 0 1 D",
            "1922 1922 3 30 7 2 0 1 D",
            "1924 1924 4 17 7 2 0 1 D",
            "1924 1926 8 0 8 2:30 0 0 S",
            "1925 1926 4 1 0 2 0 1 D",
            "1927 1927 4 1 7 0 0 1 D",
            "1927 1932 8 0 8 0 0 0 S",
            "1928 1931 3 0 8 0 0 1 D",
            "1932 1932 4 1 7 0 0 1 D",
            "1933 1940 3 0 8 0 0 1 D",
            "1933 1933 9 1 7 0 0 0 S",
            "1934 1939 8 0 8 0 0 0 S",
            "1946 1973 3 0 8 2 0 1 D",
            "1945 1948 8 0 8 2 0 0 S",
            "1949 1950 9 0 8 2 0 0 S",
            "1951 1956 8 0 8 2 0 0 S",
            "1957 1973 9 0 8 2 0 0 S"
        ],
        "Bahamas": [
            "1964 1975 9 0 8 2 0 0 S",
            "1964 1975 3 0 8 2 0 1 D"
        ],
        "NYC": [
            "1920 1920 2 0 8 2 0 1 D",
            "1920 1920 9 0 8 2 0 0 S",
            "1921 1966 3 0 8 2 0 1 D",
            "1921 1954 8 0 8 2 0 0 S",
            "1955 1966 9 0 8 2 0 0 S"
        ],
        "Haiti": [
            "1983 1983 4 8 7 0 0 1 D",
            "1984 1987 3 0 8 0 0 1 D",
            "1983 1987 9 0 8 0 0 0 S",
            "1988 1997 3 1 0 1 2 1 D",
            "1988 1997 9 0 8 1 2 0 S",
            "2005 2006 3 1 0 0 0 1 D",
            "2005 2006 9 0 8 0 0 0 S",
            "2012 9999 2 8 0 2 0 1 D",
            "2012 9999 10 1 0 2 0 0 S"
        ],
        "Regina": [
            "1918 1918 3 14 7 2 0 1 D",
            "1918 1918 9 27 7 2 0 0 S",
            "1930 1934 4 1 0 0 0 1 D",
            "1930 1934 9 1 0 0 0 0 S",
            "1937 1941 3 8 0 0 0 1 D",
            "1937 1937 9 8 0 0 0 0 S",
            "1938 1938 9 1 0 0 0 0 S",
            "1939 1941 9 8 0 0 0 0 S",
            "1942 1942 1 9 7 2 0 1 W",
            "1945 1945 7 14 7 23 1 1 P",
            "1945 1945 8 0 8 2 0 0 S",
            "1946 1946 3 8 0 2 0 1 D",
            "1946 1946 9 8 0 2 0 0 S",
            "1947 1957 3 0 8 2 0 1 D",
            "1947 1957 8 0 8 2 0 0 S",
            "1959 1959 3 0 8 2 0 1 D",
            "1959 1959 9 0 8 2 0 0 S"
        ],
        "Chile": [
            "1927 1932 8 1 7 0 0 1 S",
            "1928 1932 3 1 7 0 0 0",
            "1942 1942 5 1 7 4 1 0",
            "1942 1942 7 1 7 5 1 1 S",
            "1946 1946 6 15 7 4 1 1 S",
            "1946 1946 8 1 7 3 1 0",
            "1947 1947 3 1 7 4 1 0",
            "1968 1968 10 3 7 4 1 1 S",
            "1969 1969 2 30 7 3 1 0",
            "1969 1969 10 23 7 4 1 1 S",
            "1970 1970 2 29 7 3 1 0",
            "1971 1971 2 14 7 3 1 0",
            "1970 1972 9 9 0 4 1 1 S",
            "1972 1986 2 9 0 3 1 0",
            "1973 1973 8 30 7 4 1 1 S",
            "1974 1987 9 9 0 4 1 1 S",
            "1987 1987 3 12 7 3 1 0",
            "1988 1989 2 9 0 3 1 0",
            "1988 1988 9 1 0 4 1 1 S",
            "1989 1989 9 9 0 4 1 1 S",
            "1990 1990 2 18 7 3 1 0",
            "1990 1990 8 16 7 4 1 1 S",
            "1991 1996 2 9 0 3 1 0",
            "1991 1997 9 9 0 4 1 1 S",
            "1997 1997 2 30 7 3 1 0",
            "1998 1998 2 9 0 3 1 0",
            "1998 1998 8 27 7 4 1 1 S",
            "1999 1999 3 4 7 3 1 0",
            "1999 2010 9 9 0 4 1 1 S",
            "2000 2007 2 9 0 3 1 0",
            "2008 2008 2 30 7 3 1 0",
            "2009 2009 2 9 0 3 1 0",
            "2010 2010 3 1 0 3 1 0",
            "2011 2011 4 2 0 3 1 0",
            "2011 2011 7 16 0 4 1 1 S",
            "2012 9999 3 23 0 3 1 0",
            "2012 9999 8 2 0 4 1 1 S"
        ],
        "DR": [
            "1966 1966 9 30 7 0 0 1 D",
            "1967 1967 1 28 7 0 0 0 S",
            "1969 1973 9 0 8 0 0 0:30 HD",
            "1970 1970 1 21 7 0 0 0 S",
            "1971 1971 0 20 7 0 0 0 S",
            "1972 1974 0 21 7 0 0 0 S"
        ],
        "C-Eur": [
            "1916 1916 3 30 7 23 0 1 S",
            "1916 1916 9 1 7 1 0 0",
            "1917 1918 3 15 1 2 2 1 S",
            "1917 1918 8 15 1 2 2 0",
            "1940 1940 3 1 7 2 2 1 S",
            "1942 1942 10 2 7 2 2 0",
            "1943 1943 2 29 7 2 2 1 S",
            "1943 1943 9 4 7 2 2 0",
            "1944 1945 3 1 1 2 2 1 S",
            "1944 1944 9 2 7 2 2 0",
            "1945 1945 8 16 7 2 2 0",
            "1977 1980 3 1 0 2 2 1 S",
            "1977 1977 8 0 8 2 2 0",
            "1978 1978 9 1 7 2 2 0",
            "1979 1995 8 0 8 2 2 0",
            "1981 9999 2 0 8 2 2 1 S",
            "1996 9999 9 0 8 2 2 0"
        ],
        "Swift": [
            "1957 1957 3 0 8 2 0 1 D",
            "1957 1957 9 0 8 2 0 0 S",
            "1959 1961 3 0 8 2 0 1 D",
            "1959 1959 9 0 8 2 0 0 S",
            "1960 1961 8 0 8 2 0 0 S"
        ],
        "Hond": [
            "1987 1988 4 1 0 0 0 1 D",
            "1987 1988 8 0 8 0 0 0 S",
            "2006 2006 4 1 0 0 0 1 D",
            "2006 2006 7 1 1 0 0 0 S"
        ],
        "Thule": [
            "1991 1992 2 0 8 2 0 1 D",
            "1991 1992 8 0 8 2 0 0 S",
            "1993 2006 3 1 0 2 0 1 D",
            "1993 2006 9 0 8 2 0 0 S",
            "2007 9999 2 8 0 2 0 1 D",
            "2007 9999 10 1 0 2 0 0 S"
        ],
        "Toronto": [
            "1919 1919 2 30 7 23:30 0 1 D",
            "1919 1919 9 26 7 0 0 0 S",
            "1920 1920 4 2 7 2 0 1 D",
            "1920 1920 8 26 7 0 0 0 S",
            "1921 1921 4 15 7 2 0 1 D",
            "1921 1921 8 15 7 2 0 0 S",
            "1922 1923 4 8 0 2 0 1 D",
            "1922 1926 8 15 0 2 0 0 S",
            "1924 1927 4 1 0 2 0 1 D",
            "1927 1932 8 0 8 2 0 0 S",
            "1928 1931 3 0 8 2 0 1 D",
            "1932 1932 4 1 7 2 0 1 D",
            "1933 1940 3 0 8 2 0 1 D",
            "1933 1933 9 1 7 2 0 0 S",
            "1934 1939 8 0 8 2 0 0 S",
            "1945 1946 8 0 8 2 0 0 S",
            "1946 1946 3 0 8 2 0 1 D",
            "1947 1949 3 0 8 0 0 1 D",
            "1947 1948 8 0 8 0 0 0 S",
            "1949 1949 10 0 8 0 0 0 S",
            "1950 1973 3 0 8 2 0 1 D",
            "1950 1950 10 0 8 2 0 0 S",
            "1951 1956 8 0 8 2 0 0 S",
            "1957 1973 9 0 8 2 0 0 S"
        ],
        "Winn": [
            "1916 1916 3 23 7 0 0 1 D",
            "1916 1916 8 17 7 0 0 0 S",
            "1918 1918 3 14 7 2 0 1 D",
            "1918 1918 9 27 7 2 0 0 S",
            "1937 1937 4 16 7 2 0 1 D",
            "1937 1937 8 26 7 2 0 0 S",
            "1942 1942 1 9 7 2 0 1 W",
            "1945 1945 7 14 7 23 1 1 P",
            "1945 1945 8 0 8 2 0 0 S",
            "1946 1946 4 12 7 2 0 1 D",
            "1946 1946 9 13 7 2 0 0 S",
            "1947 1949 3 0 8 2 0 1 D",
            "1947 1949 8 0 8 2 0 0 S",
            "1950 1950 4 1 7 2 0 1 D",
            "1950 1950 8 30 7 2 0 0 S",
            "1951 1960 3 0 8 2 0 1 D",
            "1951 1958 8 0 8 2 0 0 S",
            "1959 1959 9 0 8 2 0 0 S",
            "1960 1960 8 0 8 2 0 0 S",
            "1963 1963 3 0 8 2 0 1 D",
            "1963 1963 8 22 7 2 0 0 S",
            "1966 1986 3 0 8 2 2 1 D",
            "1966 2005 9 0 8 2 2 0 S",
            "1987 2005 3 1 0 2 2 1 D"
        ],
        "Aus": [
            "1917 1917 0 1 7 0:1 0 1",
            "1917 1917 2 25 7 2 0 0",
            "1942 1942 0 1 7 2 0 1",
            "1942 1942 2 29 7 2 0 0",
            "1942 1942 8 27 7 2 0 1",
            "1943 1944 2 0 8 2 0 0",
            "1943 1943 9 3 7 2 0 1"
        ],
        "AT": [
            "1967 1967 9 1 0 2 2 1",
            "1968 1968 2 0 8 2 2 0",
            "1968 1985 9 0 8 2 2 1",
            "1969 1971 2 8 0 2 2 0",
            "1972 1972 1 0 8 2 2 0",
            "1973 1981 2 1 0 2 2 0",
            "1982 1983 2 0 8 2 2 0",
            "1984 1986 2 1 0 2 2 0",
            "1986 1986 9 15 0 2 2 1",
            "1987 1990 2 15 0 2 2 0",
            "1987 1987 9 22 0 2 2 1",
            "1988 1990 9 0 8 2 2 1",
            "1991 1999 9 1 0 2 2 1",
            "1991 2005 2 0 8 2 2 0",
            "2000 2000 7 0 8 2 2 1",
            "2001 9999 9 1 0 2 2 1",
            "2006 2006 3 1 0 2 2 0",
            "2007 2007 2 0 8 2 2 0",
            "2008 9999 3 1 0 2 2 0"
        ],
        "NZAQ": [
            "1974 1974 10 3 7 2 2 1 D",
            "1975 1988 9 0 8 2 2 1 D",
            "1989 1989 9 8 7 2 2 1 D",
            "1990 2006 9 1 0 2 2 1 D",
            "1975 1975 1 23 7 2 2 0 S",
            "1976 1989 2 1 0 2 2 0 S",
            "1990 2007 2 15 0 2 2 0 S",
            "2007 9999 8 0 8 2 2 1 D",
            "2008 9999 3 1 0 2 2 0 S"
        ],
        "ArgAQ": [
            "1964 1966 2 1 7 0 0 0",
            "1964 1966 9 15 7 0 0 1 S",
            "1967 1967 3 2 7 0 0 0",
            "1967 1968 9 1 0 0 0 1 S",
            "1968 1969 3 1 0 0 0 0",
            "1974 1974 0 23 7 0 0 1 S",
            "1974 1974 4 1 7 0 0 0"
        ],
        "ChileAQ": [
            "1972 1986 2 9 0 3 1 0",
            "1974 1987 9 9 0 4 1 1 S",
            "1987 1987 3 12 7 3 1 0",
            "1988 1989 2 9 0 3 1 0",
            "1988 1988 9 1 0 4 1 1 S",
            "1989 1989 9 9 0 4 1 1 S",
            "1990 1990 2 18 7 3 1 0",
            "1990 1990 8 16 7 4 1 1 S",
            "1991 1996 2 9 0 3 1 0",
            "1991 1997 9 9 0 4 1 1 S",
            "1997 1997 2 30 7 3 1 0",
            "1998 1998 2 9 0 3 1 0",
            "1998 1998 8 27 7 4 1 1 S",
            "1999 1999 3 4 7 3 1 0",
            "1999 2010 9 9 0 4 1 1 S",
            "2000 2007 2 9 0 3 1 0",
            "2008 2008 2 30 7 3 1 0",
            "2009 2009 2 9 0 3 1 0",
            "2010 2010 3 1 0 3 1 0",
            "2011 2011 4 2 0 3 1 0",
            "2011 2011 7 16 0 4 1 1 S",
            "2012 9999 3 23 0 3 1 0",
            "2012 9999 8 2 0 4 1 1 S"
        ],
        "Norway": [
            "1916 1916 4 22 7 1 0 1 S",
            "1916 1916 8 30 7 0 0 0",
            "1945 1945 3 2 7 2 2 1 S",
            "1945 1945 9 1 7 2 2 0",
            "1959 1964 2 15 0 2 2 1 S",
            "1959 1965 8 15 0 2 2 0",
            "1965 1965 3 25 7 2 2 1 S"
        ],
        "RussiaAsia": [
            "1981 1984 3 1 7 0 0 1 S",
            "1981 1983 9 1 7 0 0 0",
            "1984 1991 8 0 8 2 2 0",
            "1985 1991 2 0 8 2 2 1 S",
            "1992 1992 2 6 8 23 0 1 S",
            "1992 1992 8 6 8 23 0 0",
            "1993 9999 2 0 8 2 2 1 S",
            "1993 1995 8 0 8 2 2 0",
            "1996 9999 9 0 8 2 2 0"
        ],
        "Jordan": [
            "1973 1973 5 6 7 0 0 1 S",
            "1973 1975 9 1 7 0 0 0",
            "1974 1977 4 1 7 0 0 1 S",
            "1976 1976 10 1 7 0 0 0",
            "1977 1977 9 1 7 0 0 0",
            "1978 1978 3 30 7 0 0 1 S",
            "1978 1978 8 30 7 0 0 0",
            "1985 1985 3 1 7 0 0 1 S",
            "1985 1985 9 1 7 0 0 0",
            "1986 1988 3 1 5 0 0 1 S",
            "1986 1990 9 1 5 0 0 0",
            "1989 1989 4 8 7 0 0 1 S",
            "1990 1990 3 27 7 0 0 1 S",
            "1991 1991 3 17 7 0 0 1 S",
            "1991 1991 8 27 7 0 0 0",
            "1992 1992 3 10 7 0 0 1 S",
            "1992 1993 9 1 5 0 0 0",
            "1993 1998 3 1 5 0 0 1 S",
            "1994 1994 8 15 5 0 0 0",
            "1995 1998 8 15 5 0 2 0",
            "1999 1999 6 1 7 0 2 1 S",
            "1999 2002 8 5 8 0 2 0",
            "2000 2001 2 4 8 0 2 1 S",
            "2002 9999 2 4 8 24 0 1 S",
            "2003 2003 9 24 7 0 2 0",
            "2004 2004 9 15 7 0 2 0",
            "2005 2005 8 5 8 0 2 0",
            "2006 2011 9 5 8 0 2 0",
            "2013 9999 9 5 8 0 2 0"
        ],
        "Russia": [
            "1917 1917 6 1 7 23 0 1 MST",
            "1917 1917 11 28 7 0 0 0 MMT",
            "1918 1918 4 31 7 22 0 2 MDST",
            "1918 1918 8 16 7 1 0 1 MST",
            "1919 1919 4 31 7 23 0 2 MDST",
            "1919 1919 6 1 7 2 0 1 S",
            "1919 1919 7 16 7 0 0 0",
            "1921 1921 1 14 7 23 0 1 S",
            "1921 1921 2 20 7 23 0 2 M",
            "1921 1921 8 1 7 0 0 1 S",
            "1921 1921 9 1 7 0 0 0",
            "1981 1984 3 1 7 0 0 1 S",
            "1981 1983 9 1 7 0 0 0",
            "1984 1991 8 0 8 2 2 0",
            "1985 1991 2 0 8 2 2 1 S",
            "1992 1992 2 6 8 23 0 1 S",
            "1992 1992 8 6 8 23 0 0",
            "1993 2010 2 0 8 2 2 1 S",
            "1993 1995 8 0 8 2 2 0",
            "1996 2010 9 0 8 2 2 0"
        ],
        "Iraq": [
            "1982 1982 4 1 7 0 0 1 D",
            "1982 1984 9 1 7 0 0 0 S",
            "1983 1983 2 31 7 0 0 1 D",
            "1984 1985 3 1 7 0 0 1 D",
            "1985 1990 8 0 8 1 2 0 S",
            "1986 1990 2 0 8 1 2 1 D",
            "1991 2007 3 1 7 3 2 1 D",
            "1991 2007 9 1 7 3 2 0 S"
        ],
        "EUAsia": [
            "1981 9999 2 0 8 1 1 1 S",
            "1979 1995 8 0 8 1 1 0",
            "1996 9999 9 0 8 1 1 0"
        ],
        "Azer": [
            "1997 9999 2 0 8 4 0 1 S",
            "1997 9999 9 0 8 5 0 0"
        ],
        "Lebanon": [
            "1920 1920 2 28 7 0 0 1 S",
            "1920 1920 9 25 7 0 0 0",
            "1921 1921 3 3 7 0 0 1 S",
            "1921 1921 9 3 7 0 0 0",
            "1922 1922 2 26 7 0 0 1 S",
            "1922 1922 9 8 7 0 0 0",
            "1923 1923 3 22 7 0 0 1 S",
            "1923 1923 8 16 7 0 0 0",
            "1957 1961 4 1 7 0 0 1 S",
            "1957 1961 9 1 7 0 0 0",
            "1972 1972 5 22 7 0 0 1 S",
            "1972 1977 9 1 7 0 0 0",
            "1973 1977 4 1 7 0 0 1 S",
            "1978 1978 3 30 7 0 0 1 S",
            "1978 1978 8 30 7 0 0 0",
            "1984 1987 4 1 7 0 0 1 S",
            "1984 1991 9 16 7 0 0 0",
            "1988 1988 5 1 7 0 0 1 S",
            "1989 1989 4 10 7 0 0 1 S",
            "1990 1992 4 1 7 0 0 1 S",
            "1992 1992 9 4 7 0 0 0",
            "1993 9999 2 0 8 0 0 1 S",
            "1993 1998 8 0 8 0 0 0",
            "1999 9999 9 0 8 0 0 0"
        ],
        "Kyrgyz": [
            "1992 1996 3 7 0 0 2 1 S",
            "1992 1996 8 0 8 0 0 0",
            "1997 2005 2 0 8 2:30 0 1 S",
            "1997 2004 9 0 8 2:30 0 0"
        ],
        "Mongol": [
            "1983 1984 3 1 7 0 0 1 S",
            "1983 1983 9 1 7 0 0 0",
            "1985 1998 2 0 8 0 0 1 S",
            "1984 1998 8 0 8 0 0 0",
            "2001 2001 3 6 8 2 0 1 S",
            "2001 2006 8 6 8 2 0 0",
            "2002 2006 2 6 8 2 0 1 S"
        ],
        "PRC": [
            "1986 1986 4 4 7 0 0 1 D",
            "1986 1991 8 11 0 0 0 0 S",
            "1987 1991 3 10 0 0 0 1 D"
        ],
        "Syria": [
            "1920 1923 3 15 0 2 0 1 S",
            "1920 1923 9 1 0 2 0 0",
            "1962 1962 3 29 7 2 0 1 S",
            "1962 1962 9 1 7 2 0 0",
            "1963 1965 4 1 7 2 0 1 S",
            "1963 1963 8 30 7 2 0 0",
            "1964 1964 9 1 7 2 0 0",
            "1965 1965 8 30 7 2 0 0",
            "1966 1966 3 24 7 2 0 1 S",
            "1966 1976 9 1 7 2 0 0",
            "1967 1978 4 1 7 2 0 1 S",
            "1977 1978 8 1 7 2 0 0",
            "1983 1984 3 9 7 2 0 1 S",
            "1983 1984 9 1 7 2 0 0",
            "1986 1986 1 16 7 2 0 1 S",
            "1986 1986 9 9 7 2 0 0",
            "1987 1987 2 1 7 2 0 1 S",
            "1987 1988 9 31 7 2 0 0",
            "1988 1988 2 15 7 2 0 1 S",
            "1989 1989 2 31 7 2 0 1 S",
            "1989 1989 9 1 7 2 0 0",
            "1990 1990 3 1 7 2 0 1 S",
            "1990 1990 8 30 7 2 0 0",
            "1991 1991 3 1 7 0 0 1 S",
            "1991 1992 9 1 7 0 0 0",
            "1992 1992 3 8 7 0 0 1 S",
            "1993 1993 2 26 7 0 0 1 S",
            "1993 1993 8 25 7 0 0 0",
            "1994 1996 3 1 7 0 0 1 S",
            "1994 2005 9 1 7 0 0 0",
            "1997 1998 2 1 8 0 0 1 S",
            "1999 2006 3 1 7 0 0 1 S",
            "2006 2006 8 22 7 0 0 0",
            "2007 2007 2 5 8 0 0 1 S",
            "2007 2007 10 1 5 0 0 0",
            "2008 2008 3 1 5 0 0 1 S",
            "2008 2008 10 1 7 0 0 0",
            "2009 2009 2 5 8 0 0 1 S",
            "2010 2011 3 1 5 0 0 1 S",
            "2012 9999 2 5 8 0 0 1 S",
            "2009 9999 9 5 8 0 0 0"
        ],
        "Dhaka": [
            "2009 2009 5 19 7 23 0 1 S",
            "2009 2009 11 31 7 23:59 0 0"
        ],
        "Zion": [
            "1940 1940 5 1 7 0 0 1 D",
            "1942 1944 10 1 7 0 0 0 S",
            "1943 1943 3 1 7 2 0 1 D",
            "1944 1944 3 1 7 0 0 1 D",
            "1945 1945 3 16 7 0 0 1 D",
            "1945 1945 10 1 7 2 0 0 S",
            "1946 1946 3 16 7 2 0 1 D",
            "1946 1946 10 1 7 0 0 0 S",
            "1948 1948 4 23 7 0 0 2 DD",
            "1948 1948 8 1 7 0 0 1 D",
            "1948 1949 10 1 7 2 0 0 S",
            "1949 1949 4 1 7 0 0 1 D",
            "1950 1950 3 16 7 0 0 1 D",
            "1950 1950 8 15 7 3 0 0 S",
            "1951 1951 3 1 7 0 0 1 D",
            "1951 1951 10 11 7 3 0 0 S",
            "1952 1952 3 20 7 2 0 1 D",
            "1952 1952 9 19 7 3 0 0 S",
            "1953 1953 3 12 7 2 0 1 D",
            "1953 1953 8 13 7 3 0 0 S",
            "1954 1954 5 13 7 0 0 1 D",
            "1954 1954 8 12 7 0 0 0 S",
            "1955 1955 5 11 7 2 0 1 D",
            "1955 1955 8 11 7 0 0 0 S",
            "1956 1956 5 3 7 0 0 1 D",
            "1956 1956 8 30 7 3 0 0 S",
            "1957 1957 3 29 7 2 0 1 D",
            "1957 1957 8 22 7 0 0 0 S",
            "1974 1974 6 7 7 0 0 1 D",
            "1974 1974 9 13 7 0 0 0 S",
            "1975 1975 3 20 7 0 0 1 D",
            "1975 1975 7 31 7 0 0 0 S",
            "1985 1985 3 14 7 0 0 1 D",
            "1985 1985 8 15 7 0 0 0 S",
            "1986 1986 4 18 7 0 0 1 D",
            "1986 1986 8 7 7 0 0 0 S",
            "1987 1987 3 15 7 0 0 1 D",
            "1987 1987 8 13 7 0 0 0 S",
            "1988 1988 3 9 7 0 0 1 D",
            "1988 1988 8 3 7 0 0 0 S",
            "1989 1989 3 30 7 0 0 1 D",
            "1989 1989 8 3 7 0 0 0 S",
            "1990 1990 2 25 7 0 0 1 D",
            "1990 1990 7 26 7 0 0 0 S",
            "1991 1991 2 24 7 0 0 1 D",
            "1991 1991 8 1 7 0 0 0 S",
            "1992 1992 2 29 7 0 0 1 D",
            "1992 1992 8 6 7 0 0 0 S",
            "1993 1993 3 2 7 0 0 1 D",
            "1993 1993 8 5 7 0 0 0 S",
            "1994 1994 3 1 7 0 0 1 D",
            "1994 1994 7 28 7 0 0 0 S",
            "1995 1995 2 31 7 0 0 1 D",
            "1995 1995 8 3 7 0 0 0 S",
            "1996 1996 2 15 7 0 0 1 D",
            "1996 1996 8 16 7 0 0 0 S",
            "1997 1997 2 21 7 0 0 1 D",
            "1997 1997 8 14 7 0 0 0 S",
            "1998 1998 2 20 7 0 0 1 D",
            "1998 1998 8 6 7 0 0 0 S",
            "1999 1999 3 2 7 2 0 1 D",
            "1999 1999 8 3 7 2 0 0 S",
            "2000 2000 3 14 7 2 0 1 D",
            "2000 2000 9 6 7 1 0 0 S",
            "2001 2001 3 9 7 1 0 1 D",
            "2001 2001 8 24 7 1 0 0 S",
            "2002 2002 2 29 7 1 0 1 D",
            "2002 2002 9 7 7 1 0 0 S",
            "2003 2003 2 28 7 1 0 1 D",
            "2003 2003 9 3 7 1 0 0 S",
            "2004 2004 3 7 7 1 0 1 D",
            "2004 2004 8 22 7 1 0 0 S",
            "2005 2005 3 1 7 2 0 1 D",
            "2005 2005 9 9 7 2 0 0 S",
            "2006 2010 2 26 5 2 0 1 D",
            "2006 2006 9 1 7 2 0 0 S",
            "2007 2007 8 16 7 2 0 0 S",
            "2008 2008 9 5 7 2 0 0 S",
            "2009 2009 8 27 7 2 0 0 S",
            "2010 2010 8 12 7 2 0 0 S",
            "2011 2011 3 1 7 2 0 1 D",
            "2011 2011 9 2 7 2 0 0 S",
            "2012 2012 2 26 5 2 0 1 D",
            "2012 2012 8 23 7 2 0 0 S",
            "2013 9999 2 23 5 2 0 1 D",
            "2013 2026 9 2 0 2 0 0 S",
            "2027 2027 9 3 1 2 0 0 S",
            "2028 9999 9 2 0 2 0 0 S"
        ],
        "EgyptAsia": [
            "1957 1957 4 10 7 0 0 1 S",
            "1957 1958 9 1 7 0 0 0",
            "1958 1958 4 1 7 0 0 1 S",
            "1959 1967 4 1 7 1 0 1 S",
            "1959 1965 8 30 7 3 0 0",
            "1966 1966 9 1 7 3 0 0"
        ],
        "Palestine": [
            "1999 2005 3 15 5 0 0 1 S",
            "1999 2003 9 15 5 0 0 0",
            "2004 2004 9 1 7 1 0 0",
            "2005 2005 9 4 7 2 0 0",
            "2006 2007 3 1 7 0 0 1 S",
            "2006 2006 8 22 7 0 0 0",
            "2007 2007 8 8 4 2 0 0",
            "2008 2009 2 5 8 0 0 1 S",
            "2008 2008 8 1 7 0 0 0",
            "2009 2009 8 1 5 1 0 0",
            "2010 2010 2 26 7 0 0 1 S",
            "2010 2010 7 11 7 0 0 0",
            "2011 2011 3 1 7 0:1 0 1 S",
            "2011 2011 7 1 7 0 0 0",
            "2011 2011 7 30 7 0 0 1 S",
            "2011 2011 8 30 7 0 0 0",
            "2012 9999 2 4 8 24 0 1 S",
            "2012 9999 8 21 5 1 0 0"
        ],
        "HK": [
            "1941 1941 3 1 7 3:30 0 1 S",
            "1941 1941 8 30 7 3:30 0 0",
            "1946 1946 3 20 7 3:30 0 1 S",
            "1946 1946 11 1 7 3:30 0 0",
            "1947 1947 3 13 7 3:30 0 1 S",
            "1947 1947 11 30 7 3:30 0 0",
            "1948 1948 4 2 7 3:30 0 1 S",
            "1948 1951 9 0 8 3:30 0 0",
            "1952 1952 9 25 7 3:30 0 0",
            "1949 1953 3 1 0 3:30 0 1 S",
            "1953 1953 10 1 7 3:30 0 0",
            "1954 1964 2 18 0 3:30 0 1 S",
            "1954 1954 9 31 7 3:30 0 0",
            "1955 1964 10 1 0 3:30 0 0",
            "1965 1976 3 16 0 3:30 0 1 S",
            "1965 1976 9 16 0 3:30 0 0",
            "1973 1973 11 30 7 3:30 0 1 S",
            "1979 1979 4 8 0 3:30 0 1 S",
            "1979 1979 9 16 0 3:30 0 0"
        ],
        "Pakistan": [
            "2002 2002 3 2 0 0:1 0 1 S",
            "2002 2002 9 2 0 0:1 0 0",
            "2008 2008 5 1 7 0 0 1 S",
            "2008 2008 10 1 7 0 0 0",
            "2009 2009 3 15 7 0 0 1 S",
            "2009 2009 10 1 7 0 0 0"
        ],
        "NBorneo": [
            "1935 1941 8 14 7 0 0 0:20 TS",
            "1935 1941 11 14 7 0 0 0"
        ],
        "Macau": [
            "1961 1962 2 16 0 3:30 0 1 S",
            "1961 1964 10 1 0 3:30 0 0",
            "1963 1963 2 16 0 0 0 1 S",
            "1964 1964 2 16 0 3:30 0 1 S",
            "1965 1965 2 16 0 0 0 1 S",
            "1965 1965 9 31 7 0 0 0",
            "1966 1971 3 16 0 3:30 0 1 S",
            "1966 1971 9 16 0 3:30 0 0",
            "1972 1974 3 15 0 0 0 1 S",
            "1972 1973 9 15 0 0 0 0",
            "1974 1977 9 15 0 3:30 0 0",
            "1975 1977 3 15 0 3:30 0 1 S",
            "1978 1980 3 15 0 0 0 1 S",
            "1978 1980 9 15 0 0 0 0"
        ],
        "Phil": [
            "1936 1936 10 1 7 0 0 1 S",
            "1937 1937 1 1 7 0 0 0",
            "1954 1954 3 12 7 0 0 1 S",
            "1954 1954 6 1 7 0 0 0",
            "1978 1978 2 22 7 0 0 1 S",
            "1978 1978 8 21 7 0 0 0"
        ],
        "Cyprus": [
            "1975 1975 3 13 7 0 0 1 S",
            "1975 1975 9 12 7 0 0 0",
            "1976 1976 4 15 7 0 0 1 S",
            "1976 1976 9 11 7 0 0 0",
            "1977 1980 3 1 0 0 0 1 S",
            "1977 1977 8 25 7 0 0 0",
            "1978 1978 9 2 7 0 0 0",
            "1979 1997 8 0 8 0 0 0",
            "1981 1998 2 0 8 0 0 1 S"
        ],
        "ROK": [
            "1960 1960 4 15 7 0 0 1 D",
            "1960 1960 8 13 7 0 0 0 S",
            "1987 1988 4 8 0 0 0 1 D",
            "1987 1988 9 8 0 0 0 0 S"
        ],
        "Shang": [
            "1940 1940 5 3 7 0 0 1 D",
            "1940 1941 9 1 7 0 0 0 S",
            "1941 1941 2 16 7 0 0 1 D"
        ],
        "Taiwan": [
            "1945 1951 4 1 7 0 0 1 D",
            "1945 1951 9 1 7 0 0 0 S",
            "1952 1952 2 1 7 0 0 1 D",
            "1952 1954 10 1 7 0 0 0 S",
            "1953 1959 3 1 7 0 0 1 D",
            "1955 1961 9 1 7 0 0 0 S",
            "1960 1961 5 1 7 0 0 1 D",
            "1974 1975 3 1 7 0 0 1 D",
            "1974 1975 9 1 7 0 0 0 S",
            "1979 1979 5 30 7 0 0 1 D",
            "1979 1979 8 30 7 0 0 0 S"
        ],
        "E-EurAsia": [
            "1981 9999 2 0 8 0 0 1 S",
            "1979 1995 8 0 8 0 0 0",
            "1996 9999 9 0 8 0 0 0"
        ],
        "Iran": [
            "1978 1980 2 21 7 0 0 1 D",
            "1978 1978 9 21 7 0 0 0 S",
            "1979 1979 8 19 7 0 0 0 S",
            "1980 1980 8 23 7 0 0 0 S",
            "1991 1991 4 3 7 0 0 1 D",
            "1992 1995 2 22 7 0 0 1 D",
            "1991 1995 8 22 7 0 0 0 S",
            "1996 1996 2 21 7 0 0 1 D",
            "1996 1996 8 21 7 0 0 0 S",
            "1997 1999 2 22 7 0 0 1 D",
            "1997 1999 8 22 7 0 0 0 S",
            "2000 2000 2 21 7 0 0 1 D",
            "2000 2000 8 21 7 0 0 0 S",
            "2001 2003 2 22 7 0 0 1 D",
            "2001 2003 8 22 7 0 0 0 S",
            "2004 2004 2 21 7 0 0 1 D",
            "2004 2004 8 21 7 0 0 0 S",
            "2005 2005 2 22 7 0 0 1 D",
            "2005 2005 8 22 7 0 0 0 S",
            "2008 2008 2 21 7 0 0 1 D",
            "2008 2008 8 21 7 0 0 0 S",
            "2009 2011 2 22 7 0 0 1 D",
            "2009 2011 8 22 7 0 0 0 S",
            "2012 2012 2 21 7 0 0 1 D",
            "2012 2012 8 21 7 0 0 0 S",
            "2013 2015 2 22 7 0 0 1 D",
            "2013 2015 8 22 7 0 0 0 S",
            "2016 2016 2 21 7 0 0 1 D",
            "2016 2016 8 21 7 0 0 0 S",
            "2017 2019 2 22 7 0 0 1 D",
            "2017 2019 8 22 7 0 0 0 S",
            "2020 2020 2 21 7 0 0 1 D",
            "2020 2020 8 21 7 0 0 0 S",
            "2021 2023 2 22 7 0 0 1 D",
            "2021 2023 8 22 7 0 0 0 S",
            "2024 2024 2 21 7 0 0 1 D",
            "2024 2024 8 21 7 0 0 0 S",
            "2025 2027 2 22 7 0 0 1 D",
            "2025 2027 8 22 7 0 0 0 S",
            "2028 2029 2 21 7 0 0 1 D",
            "2028 2029 8 21 7 0 0 0 S",
            "2030 2031 2 22 7 0 0 1 D",
            "2030 2031 8 22 7 0 0 0 S",
            "2032 2033 2 21 7 0 0 1 D",
            "2032 2033 8 21 7 0 0 0 S",
            "2034 2035 2 22 7 0 0 1 D",
            "2034 2035 8 22 7 0 0 0 S",
            "2036 2037 2 21 7 0 0 1 D",
            "2036 2037 8 21 7 0 0 0 S"
        ],
        "Japan": [
            "1948 1948 4 1 0 2 0 1 D",
            "1948 1951 8 8 6 2 0 0 S",
            "1949 1949 3 1 0 2 0 1 D",
            "1950 1951 4 1 0 2 0 1 D"
        ],
        "Port": [
            "1916 1916 5 17 7 23 0 1 S",
            "1916 1916 10 1 7 1 0 0",
            "1917 1917 1 28 7 23 2 1 S",
            "1917 1921 9 14 7 23 2 0",
            "1918 1918 2 1 7 23 2 1 S",
            "1919 1919 1 28 7 23 2 1 S",
            "1920 1920 1 29 7 23 2 1 S",
            "1921 1921 1 28 7 23 2 1 S",
            "1924 1924 3 16 7 23 2 1 S",
            "1924 1924 9 14 7 23 2 0",
            "1926 1926 3 17 7 23 2 1 S",
            "1926 1929 9 1 6 23 2 0",
            "1927 1927 3 9 7 23 2 1 S",
            "1928 1928 3 14 7 23 2 1 S",
            "1929 1929 3 20 7 23 2 1 S",
            "1931 1931 3 18 7 23 2 1 S",
            "1931 1932 9 1 6 23 2 0",
            "1932 1932 3 2 7 23 2 1 S",
            "1934 1934 3 7 7 23 2 1 S",
            "1934 1938 9 1 6 23 2 0",
            "1935 1935 2 30 7 23 2 1 S",
            "1936 1936 3 18 7 23 2 1 S",
            "1937 1937 3 3 7 23 2 1 S",
            "1938 1938 2 26 7 23 2 1 S",
            "1939 1939 3 15 7 23 2 1 S",
            "1939 1939 10 18 7 23 2 0",
            "1940 1940 1 24 7 23 2 1 S",
            "1940 1941 9 5 7 23 2 0",
            "1941 1941 3 5 7 23 2 1 S",
            "1942 1945 2 8 6 23 2 1 S",
            "1942 1942 3 25 7 22 2 2 M",
            "1942 1942 7 15 7 22 2 1 S",
            "1942 1945 9 24 6 23 2 0",
            "1943 1943 3 17 7 22 2 2 M",
            "1943 1945 7 25 6 22 2 1 S",
            "1944 1945 3 21 6 22 2 2 M",
            "1946 1946 3 1 6 23 2 1 S",
            "1946 1946 9 1 6 23 2 0",
            "1947 1949 3 1 0 2 2 1 S",
            "1947 1949 9 1 0 2 2 0",
            "1951 1965 3 1 0 2 2 1 S",
            "1951 1965 9 1 0 2 2 0",
            "1977 1977 2 27 7 0 2 1 S",
            "1977 1977 8 25 7 0 2 0",
            "1978 1979 3 1 0 0 2 1 S",
            "1978 1978 9 1 7 0 2 0",
            "1979 1982 8 0 8 1 2 0",
            "1980 1980 2 0 8 0 2 1 S",
            "1981 1982 2 0 8 1 2 1 S",
            "1983 1983 2 0 8 2 2 1 S"
        ],
        "W-Eur": [
            "1977 1980 3 1 0 1 2 1 S",
            "1977 1977 8 0 8 1 2 0",
            "1978 1978 9 1 7 1 2 0",
            "1979 1995 8 0 8 1 2 0",
            "1981 9999 2 0 8 1 2 1 S",
            "1996 9999 9 0 8 1 2 0"
        ],
        "Iceland": [
            "1917 1918 1 19 7 23 0 1 S",
            "1917 1917 9 21 7 1 0 0",
            "1918 1918 10 16 7 1 0 0",
            "1939 1939 3 29 7 23 0 1 S",
            "1939 1939 10 29 7 2 0 0",
            "1940 1940 1 25 7 2 0 1 S",
            "1940 1940 10 3 7 2 0 0",
            "1941 1941 2 2 7 1 2 1 S",
            "1941 1941 10 2 7 1 2 0",
            "1942 1942 2 8 7 1 2 1 S",
            "1942 1942 9 25 7 1 2 0",
            "1943 1946 2 1 0 1 2 1 S",
            "1943 1948 9 22 0 1 2 0",
            "1947 1967 3 1 0 1 2 1 S",
            "1949 1949 9 30 7 1 2 0",
            "1950 1966 9 22 0 1 2 0",
            "1967 1967 9 29 7 1 2 0"
        ],
        "Falk": [
            "1937 1938 8 0 8 0 0 1 S",
            "1938 1942 2 19 0 0 0 0",
            "1939 1939 9 1 7 0 0 1 S",
            "1940 1942 8 0 8 0 0 1 S",
            "1943 1943 0 1 7 0 0 0",
            "1983 1983 8 0 8 0 0 1 S",
            "1984 1985 3 0 8 0 0 0",
            "1984 1984 8 16 7 0 0 1 S",
            "1985 2000 8 9 0 0 0 1 S",
            "1986 2000 3 16 0 0 0 0",
            "2001 2010 3 15 0 2 0 0",
            "2001 2010 8 1 0 2 0 1 S"
        ],
        "AS": [
            "1971 1985 9 0 8 2 2 1",
            "1986 1986 9 19 7 2 2 1",
            "1987 2007 9 0 8 2 2 1",
            "1972 1972 1 27 7 2 2 0",
            "1973 1985 2 1 0 2 2 0",
            "1986 1990 2 15 0 2 2 0",
            "1991 1991 2 3 7 2 2 0",
            "1992 1992 2 22 7 2 2 0",
            "1993 1993 2 7 7 2 2 0",
            "1994 1994 2 20 7 2 2 0",
            "1995 2005 2 0 8 2 2 0",
            "2006 2006 3 2 7 2 2 0",
            "2007 2007 2 0 8 2 2 0",
            "2008 9999 3 1 0 2 2 0",
            "2008 9999 9 1 0 2 2 1"
        ],
        "AQ": [
            "1971 1971 9 0 8 2 2 1",
            "1972 1972 1 0 8 2 2 0",
            "1989 1991 9 0 8 2 2 1",
            "1990 1992 2 1 0 2 2 0"
        ],
        "AN": [
            "1971 1985 9 0 8 2 2 1",
            "1972 1972 1 27 7 2 2 0",
            "1973 1981 2 1 0 2 2 0",
            "1982 1982 3 1 0 2 2 0",
            "1983 1985 2 1 0 2 2 0",
            "1986 1989 2 15 0 2 2 0",
            "1986 1986 9 19 7 2 2 1",
            "1987 1999 9 0 8 2 2 1",
            "1990 1995 2 1 0 2 2 0",
            "1996 2005 2 0 8 2 2 0",
            "2000 2000 7 0 8 2 2 1",
            "2001 2007 9 0 8 2 2 1",
            "2006 2006 3 1 0 2 2 0",
            "2007 2007 2 0 8 2 2 0",
            "2008 9999 3 1 0 2 2 0",
            "2008 9999 9 1 0 2 2 1"
        ],
        "AW": [
            "1974 1974 9 0 8 2 2 1",
            "1975 1975 2 1 0 2 2 0",
            "1983 1983 9 0 8 2 2 1",
            "1984 1984 2 1 0 2 2 0",
            "1991 1991 10 17 7 2 2 1",
            "1992 1992 2 1 0 2 2 0",
            "2006 2006 11 3 7 2 2 1",
            "2007 2009 2 0 8 2 2 0",
            "2007 2008 9 0 8 2 2 1"
        ],
        "Holiday": [
            "1992 1993 9 0 8 2 2 1",
            "1993 1994 2 1 0 2 2 0"
        ],
        "LH": [
            "1981 1984 9 0 8 2 0 1",
            "1982 1985 2 1 0 2 0 0",
            "1985 1985 9 0 8 2 0 0:30",
            "1986 1989 2 15 0 2 0 0",
            "1986 1986 9 19 7 2 0 0:30",
            "1987 1999 9 0 8 2 0 0:30",
            "1990 1995 2 1 0 2 0 0",
            "1996 2005 2 0 8 2 0 0",
            "2000 2000 7 0 8 2 0 0:30",
            "2001 2007 9 0 8 2 0 0:30",
            "2006 2006 3 1 0 2 0 0",
            "2007 2007 2 0 8 2 0 0",
            "2008 9999 3 1 0 2 0 0",
            "2008 9999 9 1 0 2 0 0:30"
        ],
        "AV": [
            "1971 1985 9 0 8 2 2 1",
            "1972 1972 1 0 8 2 2 0",
            "1973 1985 2 1 0 2 2 0",
            "1986 1990 2 15 0 2 2 0",
            "1986 1987 9 15 0 2 2 1",
            "1988 1999 9 0 8 2 2 1",
            "1991 1994 2 1 0 2 2 0",
            "1995 2005 2 0 8 2 2 0",
            "2000 2000 7 0 8 2 2 1",
            "2001 2007 9 0 8 2 2 1",
            "2006 2006 3 1 0 2 2 0",
            "2007 2007 2 0 8 2 2 0",
            "2008 9999 3 1 0 2 2 0",
            "2008 9999 9 1 0 2 2 1"
        ],
        "Neth": [
            "1916 1916 4 1 7 0 0 1 NST",
            "1916 1916 9 1 7 0 0 0 AMT",
            "1917 1917 3 16 7 2 2 1 NST",
            "1917 1917 8 17 7 2 2 0 AMT",
            "1918 1921 3 1 1 2 2 1 NST",
            "1918 1921 8 1 8 2 2 0 AMT",
            "1922 1922 2 0 8 2 2 1 NST",
            "1922 1936 9 2 0 2 2 0 AMT",
            "1923 1923 5 1 5 2 2 1 NST",
            "1924 1924 2 0 8 2 2 1 NST",
            "1925 1925 5 1 5 2 2 1 NST",
            "1926 1931 4 15 7 2 2 1 NST",
            "1932 1932 4 22 7 2 2 1 NST",
            "1933 1936 4 15 7 2 2 1 NST",
            "1937 1937 4 22 7 2 2 1 NST",
            "1937 1937 6 1 7 0 0 1 S",
            "1937 1939 9 2 0 2 2 0",
            "1938 1939 4 15 7 2 2 1 S",
            "1945 1945 3 2 7 2 2 1 S",
            "1945 1945 8 16 7 2 2 0"
        ],
        "Greece": [
            "1932 1932 6 7 7 0 0 1 S",
            "1932 1932 8 1 7 0 0 0",
            "1941 1941 3 7 7 0 0 1 S",
            "1942 1942 10 2 7 3 0 0",
            "1943 1943 2 30 7 0 0 1 S",
            "1943 1943 9 4 7 0 0 0",
            "1952 1952 6 1 7 0 0 1 S",
            "1952 1952 10 2 7 0 0 0",
            "1975 1975 3 12 7 0 2 1 S",
            "1975 1975 10 26 7 0 2 0",
            "1976 1976 3 11 7 2 2 1 S",
            "1976 1976 9 10 7 2 2 0",
            "1977 1978 3 1 0 2 2 1 S",
            "1977 1977 8 26 7 2 2 0",
            "1978 1978 8 24 7 4 0 0",
            "1979 1979 3 1 7 9 0 1 S",
            "1979 1979 8 29 7 2 0 0",
            "1980 1980 3 1 7 0 0 1 S",
            "1980 1980 8 28 7 0 0 0"
        ],
        "SovietZone": [
            "1945 1945 4 24 7 2 0 2 M",
            "1945 1945 8 24 7 3 0 1 S",
            "1945 1945 10 18 7 2 2 0"
        ],
        "Germany": [
            "1946 1946 3 14 7 2 2 1 S",
            "1946 1946 9 7 7 2 2 0",
            "1947 1949 9 1 0 2 2 0",
            "1947 1947 3 6 7 3 2 1 S",
            "1947 1947 4 11 7 2 2 2 M",
            "1947 1947 5 29 7 3 0 1 S",
            "1948 1948 3 18 7 2 2 1 S",
            "1949 1949 3 10 7 2 2 1 S"
        ],
        "Czech": [
            "1945 1945 3 8 7 2 2 1 S",
            "1945 1945 10 18 7 2 2 0",
            "1946 1946 4 6 7 2 2 1 S",
            "1946 1949 9 1 0 2 2 0",
            "1947 1947 3 20 7 2 2 1 S",
            "1948 1948 3 18 7 2 2 1 S",
            "1949 1949 3 9 7 2 2 1 S"
        ],
        "Belgium": [
            "1918 1918 2 9 7 0 2 1 S",
            "1918 1919 9 1 6 23 2 0",
            "1919 1919 2 1 7 23 2 1 S",
            "1920 1920 1 14 7 23 2 1 S",
            "1920 1920 9 23 7 23 2 0",
            "1921 1921 2 14 7 23 2 1 S",
            "1921 1921 9 25 7 23 2 0",
            "1922 1922 2 25 7 23 2 1 S",
            "1922 1927 9 1 6 23 2 0",
            "1923 1923 3 21 7 23 2 1 S",
            "1924 1924 2 29 7 23 2 1 S",
            "1925 1925 3 4 7 23 2 1 S",
            "1926 1926 3 17 7 23 2 1 S",
            "1927 1927 3 9 7 23 2 1 S",
            "1928 1928 3 14 7 23 2 1 S",
            "1928 1938 9 2 0 2 2 0",
            "1929 1929 3 21 7 2 2 1 S",
            "1930 1930 3 13 7 2 2 1 S",
            "1931 1931 3 19 7 2 2 1 S",
            "1932 1932 3 3 7 2 2 1 S",
            "1933 1933 2 26 7 2 2 1 S",
            "1934 1934 3 8 7 2 2 1 S",
            "1935 1935 2 31 7 2 2 1 S",
            "1936 1936 3 19 7 2 2 1 S",
            "1937 1937 3 4 7 2 2 1 S",
            "1938 1938 2 27 7 2 2 1 S",
            "1939 1939 3 16 7 2 2 1 S",
            "1939 1939 10 19 7 2 2 0",
            "1940 1940 1 25 7 2 2 1 S",
            "1944 1944 8 17 7 2 2 0",
            "1945 1945 3 2 7 2 2 1 S",
            "1945 1945 8 16 7 2 2 0",
            "1946 1946 4 19 7 2 2 1 S",
            "1946 1946 9 7 7 2 2 0"
        ],
        "Romania": [
            "1932 1932 4 21 7 0 2 1 S",
            "1932 1939 9 1 0 0 2 0",
            "1933 1939 3 2 0 0 2 1 S",
            "1979 1979 4 27 7 0 0 1 S",
            "1979 1979 8 0 8 0 0 0",
            "1980 1980 3 5 7 23 0 1 S",
            "1980 1980 8 0 8 1 0 0",
            "1991 1993 2 0 8 0 2 1 S",
            "1991 1993 8 0 8 0 2 0"
        ],
        "E-Eur": [
            "1977 1980 3 1 0 0 0 1 S",
            "1977 1977 8 0 8 0 0 0",
            "1978 1978 9 1 7 0 0 0",
            "1979 1995 8 0 8 0 0 0",
            "1981 9999 2 0 8 0 0 1 S",
            "1996 9999 9 0 8 0 0 0"
        ],
        "Hungary": [
            "1918 1918 3 1 7 3 0 1 S",
            "1918 1918 8 29 7 3 0 0",
            "1919 1919 3 15 7 3 0 1 S",
            "1919 1919 8 15 7 3 0 0",
            "1920 1920 3 5 7 3 0 1 S",
            "1920 1920 8 30 7 3 0 0",
            "1945 1945 4 1 7 23 0 1 S",
            "1945 1945 10 3 7 0 0 0",
            "1946 1946 2 31 7 2 2 1 S",
            "1946 1949 9 1 0 2 2 0",
            "1947 1949 3 4 0 2 2 1 S",
            "1950 1950 3 17 7 2 2 1 S",
            "1950 1950 9 23 7 2 2 0",
            "1954 1955 4 23 7 0 0 1 S",
            "1954 1955 9 3 7 0 0 0",
            "1956 1956 5 1 0 0 0 1 S",
            "1956 1956 8 0 8 0 0 0",
            "1957 1957 5 1 0 1 0 1 S",
            "1957 1957 8 0 8 3 0 0",
            "1980 1980 3 6 7 1 0 1 S"
        ],
        "Swiss": [
            "1941 1942 4 1 1 1 0 1 S",
            "1941 1942 9 1 1 2 0 0"
        ],
        "Denmark": [
            "1916 1916 4 14 7 23 0 1 S",
            "1916 1916 8 30 7 23 0 0",
            "1940 1940 4 15 7 0 0 1 S",
            "1945 1945 3 2 7 2 2 1 S",
            "1945 1945 7 15 7 2 2 0",
            "1946 1946 4 1 7 2 2 1 S",
            "1946 1946 8 1 7 2 2 0",
            "1947 1947 4 4 7 2 2 1 S",
            "1947 1947 7 10 7 2 2 0",
            "1948 1948 4 9 7 2 2 1 S",
            "1948 1948 7 8 7 2 2 0"
        ],
        "GB-Eire": [
            "1916 1916 4 21 7 2 2 1 BST",
            "1916 1916 9 1 7 2 2 0 GMT",
            "1917 1917 3 8 7 2 2 1 BST",
            "1917 1917 8 17 7 2 2 0 GMT",
            "1918 1918 2 24 7 2 2 1 BST",
            "1918 1918 8 30 7 2 2 0 GMT",
            "1919 1919 2 30 7 2 2 1 BST",
            "1919 1919 8 29 7 2 2 0 GMT",
            "1920 1920 2 28 7 2 2 1 BST",
            "1920 1920 9 25 7 2 2 0 GMT",
            "1921 1921 3 3 7 2 2 1 BST",
            "1921 1921 9 3 7 2 2 0 GMT",
            "1922 1922 2 26 7 2 2 1 BST",
            "1922 1922 9 8 7 2 2 0 GMT",
            "1923 1923 3 16 0 2 2 1 BST",
            "1923 1924 8 16 0 2 2 0 GMT",
            "1924 1924 3 9 0 2 2 1 BST",
            "1925 1926 3 16 0 2 2 1 BST",
            "1925 1938 9 2 0 2 2 0 GMT",
            "1927 1927 3 9 0 2 2 1 BST",
            "1928 1929 3 16 0 2 2 1 BST",
            "1930 1930 3 9 0 2 2 1 BST",
            "1931 1932 3 16 0 2 2 1 BST",
            "1933 1933 3 9 0 2 2 1 BST",
            "1934 1934 3 16 0 2 2 1 BST",
            "1935 1935 3 9 0 2 2 1 BST",
            "1936 1937 3 16 0 2 2 1 BST",
            "1938 1938 3 9 0 2 2 1 BST",
            "1939 1939 3 16 0 2 2 1 BST",
            "1939 1939 10 16 0 2 2 0 GMT",
            "1940 1940 1 23 0 2 2 1 BST",
            "1941 1941 4 2 0 1 2 2 BDST",
            "1941 1943 7 9 0 1 2 1 BST",
            "1942 1944 3 2 0 1 2 2 BDST",
            "1944 1944 8 16 0 1 2 1 BST",
            "1945 1945 3 2 1 1 2 2 BDST",
            "1945 1945 6 9 0 1 2 1 BST",
            "1945 1946 9 2 0 2 2 0 GMT",
            "1946 1946 3 9 0 2 2 1 BST",
            "1947 1947 2 16 7 2 2 1 BST",
            "1947 1947 3 13 7 1 2 2 BDST",
            "1947 1947 7 10 7 1 2 1 BST",
            "1947 1947 10 2 7 2 2 0 GMT",
            "1948 1948 2 14 7 2 2 1 BST",
            "1948 1948 9 31 7 2 2 0 GMT",
            "1949 1949 3 3 7 2 2 1 BST",
            "1949 1949 9 30 7 2 2 0 GMT",
            "1950 1952 3 14 0 2 2 1 BST",
            "1950 1952 9 21 0 2 2 0 GMT",
            "1953 1953 3 16 0 2 2 1 BST",
            "1953 1960 9 2 0 2 2 0 GMT",
            "1954 1954 3 9 0 2 2 1 BST",
            "1955 1956 3 16 0 2 2 1 BST",
            "1957 1957 3 9 0 2 2 1 BST",
            "1958 1959 3 16 0 2 2 1 BST",
            "1960 1960 3 9 0 2 2 1 BST",
            "1961 1963 2 0 8 2 2 1 BST",
            "1961 1968 9 23 0 2 2 0 GMT",
            "1964 1967 2 19 0 2 2 1 BST",
            "1968 1968 1 18 7 2 2 1 BST",
            "1972 1980 2 16 0 2 2 1 BST",
            "1972 1980 9 23 0 2 2 0 GMT",
            "1981 1995 2 0 8 1 1 1 BST",
            "1981 1989 9 23 0 1 1 0 GMT",
            "1990 1995 9 22 0 1 1 0 GMT"
        ],
        "Finland": [
            "1942 1942 3 3 7 0 0 1 S",
            "1942 1942 9 3 7 0 0 0",
            "1981 1982 2 0 8 2 0 1 S",
            "1981 1982 8 0 8 3 0 0"
        ],
        "Turkey": [
            "1916 1916 4 1 7 0 0 1 S",
            "1916 1916 9 1 7 0 0 0",
            "1920 1920 2 28 7 0 0 1 S",
            "1920 1920 9 25 7 0 0 0",
            "1921 1921 3 3 7 0 0 1 S",
            "1921 1921 9 3 7 0 0 0",
            "1922 1922 2 26 7 0 0 1 S",
            "1922 1922 9 8 7 0 0 0",
            "1924 1924 4 13 7 0 0 1 S",
            "1924 1925 9 1 7 0 0 0",
            "1925 1925 4 1 7 0 0 1 S",
            "1940 1940 5 30 7 0 0 1 S",
            "1940 1940 9 5 7 0 0 0",
            "1940 1940 11 1 7 0 0 1 S",
            "1941 1941 8 21 7 0 0 0",
            "1942 1942 3 1 7 0 0 1 S",
            "1942 1942 10 1 7 0 0 0",
            "1945 1945 3 2 7 0 0 1 S",
            "1945 1945 9 8 7 0 0 0",
            "1946 1946 5 1 7 0 0 1 S",
            "1946 1946 9 1 7 0 0 0",
            "1947 1948 3 16 0 0 0 1 S",
            "1947 1950 9 2 0 0 0 0",
            "1949 1949 3 10 7 0 0 1 S",
            "1950 1950 3 19 7 0 0 1 S",
            "1951 1951 3 22 7 0 0 1 S",
            "1951 1951 9 8 7 0 0 0",
            "1962 1962 6 15 7 0 0 1 S",
            "1962 1962 9 8 7 0 0 0",
            "1964 1964 4 15 7 0 0 1 S",
            "1964 1964 9 1 7 0 0 0",
            "1970 1972 4 2 0 0 0 1 S",
            "1970 1972 9 2 0 0 0 0",
            "1973 1973 5 3 7 1 0 1 S",
            "1973 1973 10 4 7 3 0 0",
            "1974 1974 2 31 7 2 0 1 S",
            "1974 1974 10 3 7 5 0 0",
            "1975 1975 2 30 7 0 0 1 S",
            "1975 1976 9 0 8 0 0 0",
            "1976 1976 5 1 7 0 0 1 S",
            "1977 1978 3 1 0 0 0 1 S",
            "1977 1977 9 16 7 0 0 0",
            "1979 1980 3 1 0 3 0 1 S",
            "1979 1982 9 11 1 0 0 0",
            "1981 1982 2 0 8 3 0 1 S",
            "1983 1983 6 31 7 0 0 1 S",
            "1983 1983 9 2 7 0 0 0",
            "1985 1985 3 20 7 0 0 1 S",
            "1985 1985 8 28 7 0 0 0",
            "1986 1990 2 0 8 2 2 1 S",
            "1986 1990 8 0 8 2 2 0",
            "1991 2006 2 0 8 1 2 1 S",
            "1991 1995 8 0 8 1 2 0",
            "1996 2006 9 0 8 1 2 0"
        ],
        "Poland": [
            "1918 1919 8 16 7 2 2 0",
            "1919 1919 3 15 7 2 2 1 S",
            "1944 1944 3 3 7 2 2 1 S",
            "1944 1944 9 4 7 2 0 0",
            "1945 1945 3 29 7 0 0 1 S",
            "1945 1945 10 1 7 0 0 0",
            "1946 1946 3 14 7 0 2 1 S",
            "1946 1946 9 7 7 2 2 0",
            "1947 1947 4 4 7 2 2 1 S",
            "1947 1949 9 1 0 2 2 0",
            "1948 1948 3 18 7 2 2 1 S",
            "1949 1949 3 10 7 2 2 1 S",
            "1957 1957 5 2 7 1 2 1 S",
            "1957 1958 8 0 8 1 2 0",
            "1958 1958 2 30 7 1 2 1 S",
            "1959 1959 4 31 7 1 2 1 S",
            "1959 1961 9 1 0 1 2 0",
            "1960 1960 3 3 7 1 2 1 S",
            "1961 1964 4 0 8 1 2 1 S",
            "1962 1964 8 0 8 1 2 0"
        ],
        "Lux": [
            "1916 1916 4 14 7 23 0 1 S",
            "1916 1916 9 1 7 1 0 0",
            "1917 1917 3 28 7 23 0 1 S",
            "1917 1917 8 17 7 1 0 0",
            "1918 1918 3 15 1 2 2 1 S",
            "1918 1918 8 15 1 2 2 0",
            "1919 1919 2 1 7 23 0 1 S",
            "1919 1919 9 5 7 3 0 0",
            "1920 1920 1 14 7 23 0 1 S",
            "1920 1920 9 24 7 2 0 0",
            "1921 1921 2 14 7 23 0 1 S",
            "1921 1921 9 26 7 2 0 0",
            "1922 1922 2 25 7 23 0 1 S",
            "1922 1922 9 2 0 1 0 0",
            "1923 1923 3 21 7 23 0 1 S",
            "1923 1923 9 2 0 2 0 0",
            "1924 1924 2 29 7 23 0 1 S",
            "1924 1928 9 2 0 1 0 0",
            "1925 1925 3 5 7 23 0 1 S",
            "1926 1926 3 17 7 23 0 1 S",
            "1927 1927 3 9 7 23 0 1 S",
            "1928 1928 3 14 7 23 0 1 S",
            "1929 1929 3 20 7 23 0 1 S"
        ],
        "Italy": [
            "1916 1916 5 3 7 0 2 1 S",
            "1916 1916 9 1 7 0 2 0",
            "1917 1917 3 1 7 0 2 1 S",
            "1917 1917 8 30 7 0 2 0",
            "1918 1918 2 10 7 0 2 1 S",
            "1918 1919 9 1 0 0 2 0",
            "1919 1919 2 2 7 0 2 1 S",
            "1920 1920 2 21 7 0 2 1 S",
            "1920 1920 8 19 7 0 2 0",
            "1940 1940 5 15 7 0 2 1 S",
            "1944 1944 8 17 7 0 2 0",
            "1945 1945 3 2 7 2 0 1 S",
            "1945 1945 8 15 7 0 2 0",
            "1946 1946 2 17 7 2 2 1 S",
            "1946 1946 9 6 7 2 2 0",
            "1947 1947 2 16 7 0 2 1 S",
            "1947 1947 9 5 7 0 2 0",
            "1948 1948 1 29 7 2 2 1 S",
            "1948 1948 9 3 7 2 2 0",
            "1966 1968 4 22 0 0 0 1 S",
            "1966 1969 8 22 0 0 0 0",
            "1969 1969 5 1 7 0 0 1 S",
            "1970 1970 4 31 7 0 0 1 S",
            "1970 1970 8 0 8 0 0 0",
            "1971 1972 4 22 0 0 0 1 S",
            "1971 1971 8 0 8 1 0 0",
            "1972 1972 9 1 7 0 0 0",
            "1973 1973 5 3 7 0 0 1 S",
            "1973 1974 8 0 8 0 0 0",
            "1974 1974 4 26 7 0 0 1 S",
            "1975 1975 5 1 7 0 2 1 S",
            "1975 1977 8 0 8 0 2 0",
            "1976 1976 4 30 7 0 2 1 S",
            "1977 1979 4 22 0 0 2 1 S",
            "1978 1978 9 1 7 0 2 0",
            "1979 1979 8 30 7 0 2 0"
        ],
        "Malta": [
            "1973 1973 2 31 7 0 2 1 S",
            "1973 1973 8 29 7 0 2 0",
            "1974 1974 3 21 7 0 2 1 S",
            "1974 1974 8 16 7 0 2 0",
            "1975 1979 3 15 0 2 0 1 S",
            "1975 1980 8 15 0 2 0 0",
            "1980 1980 2 31 7 2 0 1 S"
        ],
        "France": [
            "1916 1916 5 14 7 23 2 1 S",
            "1916 1919 9 1 0 23 2 0",
            "1917 1917 2 24 7 23 2 1 S",
            "1918 1918 2 9 7 23 2 1 S",
            "1919 1919 2 1 7 23 2 1 S",
            "1920 1920 1 14 7 23 2 1 S",
            "1920 1920 9 23 7 23 2 0",
            "1921 1921 2 14 7 23 2 1 S",
            "1921 1921 9 25 7 23 2 0",
            "1922 1922 2 25 7 23 2 1 S",
            "1922 1938 9 1 6 23 2 0",
            "1923 1923 4 26 7 23 2 1 S",
            "1924 1924 2 29 7 23 2 1 S",
            "1925 1925 3 4 7 23 2 1 S",
            "1926 1926 3 17 7 23 2 1 S",
            "1927 1927 3 9 7 23 2 1 S",
            "1928 1928 3 14 7 23 2 1 S",
            "1929 1929 3 20 7 23 2 1 S",
            "1930 1930 3 12 7 23 2 1 S",
            "1931 1931 3 18 7 23 2 1 S",
            "1932 1932 3 2 7 23 2 1 S",
            "1933 1933 2 25 7 23 2 1 S",
            "1934 1934 3 7 7 23 2 1 S",
            "1935 1935 2 30 7 23 2 1 S",
            "1936 1936 3 18 7 23 2 1 S",
            "1937 1937 3 3 7 23 2 1 S",
            "1938 1938 2 26 7 23 2 1 S",
            "1939 1939 3 15 7 23 2 1 S",
            "1939 1939 10 18 7 23 2 0",
            "1940 1940 1 25 7 2 0 1 S",
            "1941 1941 4 5 7 0 0 2 M",
            "1941 1941 9 6 7 0 0 1 S",
            "1942 1942 2 9 7 0 0 2 M",
            "1942 1942 10 2 7 3 0 1 S",
            "1943 1943 2 29 7 2 0 2 M",
            "1943 1943 9 4 7 3 0 1 S",
            "1944 1944 3 3 7 2 0 2 M",
            "1944 1944 9 8 7 1 0 1 S",
            "1945 1945 3 2 7 2 0 2 M",
            "1945 1945 8 16 7 3 0 0",
            "1976 1976 2 28 7 1 0 1 S",
            "1976 1976 8 26 7 1 0 0"
        ],
        "Latvia": [
            "1989 1996 2 0 8 2 2 1 S",
            "1989 1996 8 0 8 2 2 0"
        ],
        "Bulg": [
            "1979 1979 2 31 7 23 0 1 S",
            "1979 1979 9 1 7 1 0 0",
            "1980 1982 3 1 6 23 0 1 S",
            "1980 1980 8 29 7 1 0 0",
            "1981 1981 8 27 7 2 0 0"
        ],
        "Albania": [
            "1940 1940 5 16 7 0 0 1 S",
            "1942 1942 10 2 7 3 0 0",
            "1943 1943 2 29 7 2 0 1 S",
            "1943 1943 3 10 7 3 0 0",
            "1974 1974 4 4 7 0 0 1 S",
            "1974 1974 9 2 7 0 0 0",
            "1975 1975 4 1 7 0 0 1 S",
            "1975 1975 9 2 7 0 0 0",
            "1976 1976 4 2 7 0 0 1 S",
            "1976 1976 9 3 7 0 0 0",
            "1977 1977 4 8 7 0 0 1 S",
            "1977 1977 9 2 7 0 0 0",
            "1978 1978 4 6 7 0 0 1 S",
            "1978 1978 9 1 7 0 0 0",
            "1979 1979 4 5 7 0 0 1 S",
            "1979 1979 8 30 7 0 0 0",
            "1980 1980 4 3 7 0 0 1 S",
            "1980 1980 9 4 7 0 0 0",
            "1981 1981 3 26 7 0 0 1 S",
            "1981 1981 8 27 7 0 0 0",
            "1982 1982 4 2 7 0 0 1 S",
            "1982 1982 9 3 7 0 0 0",
            "1983 1983 3 18 7 0 0 1 S",
            "1983 1983 9 1 7 0 0 0",
            "1984 1984 3 1 7 0 0 1 S"
        ],
        "Austria": [
            "1920 1920 3 5 7 2 2 1 S",
            "1920 1920 8 13 7 2 2 0",
            "1946 1946 3 14 7 2 2 1 S",
            "1946 1948 9 1 0 2 2 0",
            "1947 1947 3 6 7 2 2 1 S",
            "1948 1948 3 18 7 2 2 1 S",
            "1980 1980 3 6 7 0 0 1 S",
            "1980 1980 8 28 7 0 0 0"
        ],
        "Mauritius": [
            "1982 1982 9 10 7 0 0 1 S",
            "1983 1983 2 21 7 0 0 0",
            "2008 2008 9 0 8 2 0 1 S",
            "2009 2009 2 0 8 2 0 0"
        ],
        "WS": [
            "2012 9999 8 0 8 3 0 1 D",
            "2012 9999 3 1 0 4 0 0"
        ],
        "NZ": [
            "1927 1927 10 6 7 2 0 1 S",
            "1928 1928 2 4 7 2 0 0 M",
            "1928 1933 9 8 0 2 0 0:30 S",
            "1929 1933 2 15 0 2 0 0 M",
            "1934 1940 3 0 8 2 0 0 M",
            "1934 1940 8 0 8 2 0 0:30 S",
            "1946 1946 0 1 7 0 0 0 S",
            "1974 1974 10 1 0 2 2 1 D",
            "1975 1975 1 0 8 2 2 0 S",
            "1975 1988 9 0 8 2 2 1 D",
            "1976 1989 2 1 0 2 2 0 S",
            "1989 1989 9 8 0 2 2 1 D",
            "1990 2006 9 1 0 2 2 1 D",
            "1990 2007 2 15 0 2 2 0 S",
            "2007 9999 8 0 8 2 2 1 D",
            "2008 9999 3 1 0 2 2 0 S"
        ],
        "Chatham": [
            "1974 1974 10 1 0 2:45 2 1 D",
            "1975 1975 1 0 8 2:45 2 0 S",
            "1975 1988 9 0 8 2:45 2 1 D",
            "1976 1989 2 1 0 2:45 2 0 S",
            "1989 1989 9 8 0 2:45 2 1 D",
            "1990 2006 9 1 0 2:45 2 1 D",
            "1990 2007 2 15 0 2:45 2 0 S",
            "2007 9999 8 0 8 2:45 2 1 D",
            "2008 9999 3 1 0 2:45 2 0 S"
        ],
        "Vanuatu": [
            "1983 1983 8 25 7 0 0 1 S",
            "1984 1991 2 23 0 0 0 0",
            "1984 1984 9 23 7 0 0 1 S",
            "1985 1991 8 23 0 0 0 1 S",
            "1992 1993 0 23 0 0 0 0",
            "1992 1992 9 23 0 0 0 1 S"
        ],
        "Fiji": [
            "1998 1999 10 1 0 2 0 1 S",
            "1999 2000 1 0 8 3 0 0",
            "2009 2009 10 29 7 2 0 1 S",
            "2010 2010 2 0 8 3 0 0",
            "2010 9999 9 18 0 2 0 1 S",
            "2011 2011 2 1 0 3 0 0",
            "2012 9999 0 18 0 3 0 0"
        ],
        "NC": [
            "1977 1978 11 1 0 0 0 1 S",
            "1978 1979 1 27 7 0 0 0",
            "1996 1996 11 1 7 2 2 1 S",
            "1997 1997 2 2 7 2 2 0"
        ],
        "Cook": [
            "1978 1978 10 12 7 0 0 0:30 HS",
            "1979 1991 2 1 0 0 0 0",
            "1979 1990 9 0 8 0 0 0:30 HS"
        ],
        "Tonga": [
            "1999 1999 9 7 7 2 2 1 S",
            "2000 2000 2 19 7 2 2 0",
            "2000 2001 10 1 0 2 0 1 S",
            "2001 2002 0 0 8 2 0 0"
        ]
    },
    "links": {
        "America/Kralendijk": "America/Curacao",
        "America/Lower_Princes": "America/Curacao",
        "America/Marigot": "America/Guadeloupe",
        "America/Shiprock": "America/Denver",
        "America/St_Barthelemy": "America/Guadeloupe",
        "Antarctica/South_Pole": "Antarctica/McMurdo",
        "Arctic/Longyearbyen": "Europe/Oslo",
        "Europe/Bratislava": "Europe/Prague",
        "Europe/Busingen": "Europe/Zurich",
        "Europe/Guernsey": "Europe/London",
        "Europe/Isle_of_Man": "Europe/London",
        "Europe/Jersey": "Europe/London",
        "Europe/Ljubljana": "Europe/Belgrade",
        "Europe/Mariehamn": "Europe/Helsinki",
        "Europe/Podgorica": "Europe/Belgrade",
        "Europe/San_Marino": "Europe/Rome",
        "Europe/Sarajevo": "Europe/Belgrade",
        "Europe/Skopje": "Europe/Belgrade",
        "Europe/Vatican": "Europe/Rome",
        "Europe/Zagreb": "Europe/Belgrade"
    }
});// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @externs_url http://closure-compiler.googlecode.com/svn/trunk/contrib/externs/maps/google_maps_api_v3_3.js
// ==/ClosureCompiler==

/**
 * @name MarkerClusterer for Google Maps v3
 * @version version 1.0.1
 * @author Luke Mahe
 * @fileoverview
 * The library creates and manages per-zoom-level clusters for large amounts of
 * markers.
 * <br/>
 * This is a v3 implementation of the
 * <a href="http://gmaps-utility-library-dev.googlecode.com/svn/tags/markerclusterer/"
 * >v2 MarkerClusterer</a>.
 */

/**
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


/**
 * A Marker Clusterer that clusters markers.
 *
 * @param {google.maps.Map} map The Google map to attach to.
 * @param {Array.<google.maps.Marker>=} opt_markers Optional markers to add to
 *   the cluster.
 * @param {Object=} opt_options support the following options:
 *     'gridSize': (number) The grid size of a cluster in pixels.
 *     'maxZoom': (number) The maximum zoom level that a marker can be part of a
 *                cluster.
 *     'zoomOnClick': (boolean) Whether the default behaviour of clicking on a
 *                    cluster is to zoom into it.
 *     'averageCenter': (boolean) Wether the center of each cluster should be
 *                      the average of all markers in the cluster.
 *     'minimumClusterSize': (number) The minimum number of markers to be in a
 *                           cluster before the markers are hidden and a count
 *                           is shown.
 *     'styles': (object) An object that has style properties:
 *       'url': (string) The image url.
 *       'height': (number) The image height.
 *       'width': (number) The image width.
 *       'anchor': (Array) The anchor position of the label text.
 *       'textColor': (string) The text color.
 *       'textSize': (number) The text size.
 *       'backgroundPosition': (string) The position of the backgound x, y.
 * @constructor
 * @extends google.maps.OverlayView
 */
function MarkerClusterer(map, opt_markers, opt_options) {
  // MarkerClusterer implements google.maps.OverlayView interface. We use the
  // extend function to extend MarkerClusterer with google.maps.OverlayView
  // because it might not always be available when the code is defined so we
  // look for it at the last possible moment. If it doesn't exist now then
  // there is no point going ahead :)
  this.extend(MarkerClusterer, google.maps.OverlayView);
  this.map_ = map;

  /**
   * @type {Array.<google.maps.Marker>}
   * @private
   */
  this.markers_ = [];

  /**
   *  @type {Array.<Cluster>}
   */
  this.clusters_ = [];

  this.sizes = [53, 56, 66, 78, 90];

  /**
   * @private
   */
  this.styles_ = [];

  /**
   * @type {boolean}
   * @private
   */
  this.ready_ = false;

  var options = opt_options || {};

  /**
   * @type {number}
   * @private
   */
  this.gridSize_ = options['gridSize'] || 60;

  /**
   * @private
   */
  this.minClusterSize_ = options['minimumClusterSize'] || 2;


  /**
   * @type {?number}
   * @private
   */
  this.maxZoom_ = options['maxZoom'] || null;

  this.styles_ = options['styles'] || [];

  /**
   * @type {string}
   * @private
   */
  this.imagePath_ = options['imagePath'] ||
      this.MARKER_CLUSTER_IMAGE_PATH_;

  /**
   * @type {string}
   * @private
   */
  this.imageExtension_ = options['imageExtension'] ||
      this.MARKER_CLUSTER_IMAGE_EXTENSION_;

  /**
   * @type {boolean}
   * @private
   */
  this.zoomOnClick_ = true;

  if (options['zoomOnClick'] != undefined) {
    this.zoomOnClick_ = options['zoomOnClick'];
  }

  /**
   * @type {boolean}
   * @private
   */
  this.averageCenter_ = false;

  if (options['averageCenter'] != undefined) {
    this.averageCenter_ = options['averageCenter'];
  }

  this.setupStyles_();

  this.setMap(map);

  /**
   * @type {number}
   * @private
   */
  this.prevZoom_ = this.map_.getZoom();

  // Add the map event listeners
  var that = this;
  google.maps.event.addListener(this.map_, 'zoom_changed', function() {
    // Determines map type and prevent illegal zoom levels
    var zoom = that.map_.getZoom();
    var minZoom = that.map_.minZoom || 0;
    var maxZoom = Math.min(that.map_.maxZoom || 100,
                         that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom);
    zoom = Math.min(Math.max(zoom,minZoom),maxZoom);

    if (that.prevZoom_ != zoom) {
      that.prevZoom_ = zoom;
      that.resetViewport();
    }
  });

  google.maps.event.addListener(this.map_, 'idle', function() {
    that.redraw();
  });

  // Finally, add the markers
  if (opt_markers && (opt_markers.length || Object.keys(opt_markers).length)) {
    this.addMarkers(opt_markers, false);
  }
}


/**
 * The marker cluster image path.
 *
 * @type {string}
 * @private
 */
MarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_PATH_ =
    'http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/' +
    'images/m';


/**
 * The marker cluster image path.
 *
 * @type {string}
 * @private
 */
MarkerClusterer.prototype.MARKER_CLUSTER_IMAGE_EXTENSION_ = 'png';


/**
 * Extends a objects prototype by anothers.
 *
 * @param {Object} obj1 The object to be extended.
 * @param {Object} obj2 The object to extend with.
 * @return {Object} The new extended object.
 * @ignore
 */
MarkerClusterer.prototype.extend = function(obj1, obj2) {
  return (function(object) {
    for (var property in object.prototype) {
      this.prototype[property] = object.prototype[property];
    }
    return this;
  }).apply(obj1, [obj2]);
};


/**
 * Implementaion of the interface method.
 * @ignore
 */
MarkerClusterer.prototype.onAdd = function() {
  this.setReady_(true);
};

/**
 * Implementaion of the interface method.
 * @ignore
 */
MarkerClusterer.prototype.draw = function() {};

/**
 * Sets up the styles object.
 *
 * @private
 */
MarkerClusterer.prototype.setupStyles_ = function() {
  if (this.styles_.length) {
    return;
  }

  for (var i = 0, size; size = this.sizes[i]; i++) {
    this.styles_.push({
      url: this.imagePath_ + (i + 1) + '.' + this.imageExtension_,
      height: size,
      width: size
    });
  }
};

/**
 *  Fit the map to the bounds of the markers in the clusterer.
 */
MarkerClusterer.prototype.fitMapToMarkers = function() {
  var markers = this.getMarkers();
  var bounds = new google.maps.LatLngBounds();
  for (var i = 0, marker; marker = markers[i]; i++) {
    bounds.extend(marker.getPosition());
  }

  this.map_.fitBounds(bounds);
};


/**
 *  Sets the styles.
 *
 *  @param {Object} styles The style to set.
 */
MarkerClusterer.prototype.setStyles = function(styles) {
  this.styles_ = styles;
};


/**
 *  Gets the styles.
 *
 *  @return {Object} The styles object.
 */
MarkerClusterer.prototype.getStyles = function() {
  return this.styles_;
};


/**
 * Whether zoom on click is set.
 *
 * @return {boolean} True if zoomOnClick_ is set.
 */
MarkerClusterer.prototype.isZoomOnClick = function() {
  return this.zoomOnClick_;
};

/**
 * Whether average center is set.
 *
 * @return {boolean} True if averageCenter_ is set.
 */
MarkerClusterer.prototype.isAverageCenter = function() {
  return this.averageCenter_;
};


/**
 *  Returns the array of markers in the clusterer.
 *
 *  @return {Array.<google.maps.Marker>} The markers.
 */
MarkerClusterer.prototype.getMarkers = function() {
  return this.markers_;
};


/**
 *  Returns the number of markers in the clusterer
 *
 *  @return {Number} The number of markers.
 */
MarkerClusterer.prototype.getTotalMarkers = function() {
  return this.markers_.length;
};


/**
 *  Sets the max zoom for the clusterer.
 *
 *  @param {number} maxZoom The max zoom level.
 */
MarkerClusterer.prototype.setMaxZoom = function(maxZoom) {
  this.maxZoom_ = maxZoom;
};


/**
 *  Gets the max zoom for the clusterer.
 *
 *  @return {number} The max zoom level.
 */
MarkerClusterer.prototype.getMaxZoom = function() {
  return this.maxZoom_;
};


/**
 *  The function for calculating the cluster icon image.
 *
 *  @param {Array.<google.maps.Marker>} markers The markers in the clusterer.
 *  @param {number} numStyles The number of styles available.
 *  @return {Object} A object properties: 'text' (string) and 'index' (number).
 *  @private
 */
MarkerClusterer.prototype.calculator_ = function(markers, numStyles) {
  var index = 0;
  var count = markers.length;
  var dv = count;
  while (dv !== 0) {
    dv = parseInt(dv / 10, 10);
    index++;
  }

  index = Math.min(index, numStyles);
  return {
    text: count,
    index: index
  };
};


/**
 * Set the calculator function.
 *
 * @param {function(Array, number)} calculator The function to set as the
 *     calculator. The function should return a object properties:
 *     'text' (string) and 'index' (number).
 *
 */
MarkerClusterer.prototype.setCalculator = function(calculator) {
  this.calculator_ = calculator;
};


/**
 * Get the calculator function.
 *
 * @return {function(Array, number)} the calculator function.
 */
MarkerClusterer.prototype.getCalculator = function() {
  return this.calculator_;
};


/**
 * Add an array of markers to the clusterer.
 *
 * @param {Array.<google.maps.Marker>} markers The markers to add.
 * @param {boolean=} opt_nodraw Whether to redraw the clusters.
 */
MarkerClusterer.prototype.addMarkers = function(markers, opt_nodraw) {
  if (markers.length) {
    for (var i = 0, marker; marker = markers[i]; i++) {
      this.pushMarkerTo_(marker);
    }
  } else if (Object.keys(markers).length) {
    for (var marker in markers) {
      this.pushMarkerTo_(markers[marker]);
    }
  }
  if (!opt_nodraw) {
    this.redraw();
  }
};


/**
 * Pushes a marker to the clusterer.
 *
 * @param {google.maps.Marker} marker The marker to add.
 * @private
 */
MarkerClusterer.prototype.pushMarkerTo_ = function(marker) {
  marker.isAdded = false;
  if (marker['draggable']) {
    // If the marker is draggable add a listener so we update the clusters on
    // the drag end.
    var that = this;
    google.maps.event.addListener(marker, 'dragend', function() {
      marker.isAdded = false;
      that.repaint();
    });
  }
  this.markers_.push(marker);
};


/**
 * Adds a marker to the clusterer and redraws if needed.
 *
 * @param {google.maps.Marker} marker The marker to add.
 * @param {boolean=} opt_nodraw Whether to redraw the clusters.
 */
MarkerClusterer.prototype.addMarker = function(marker, opt_nodraw) {
  this.pushMarkerTo_(marker);
  if (!opt_nodraw) {
    this.redraw();
  }
};


/**
 * Removes a marker and returns true if removed, false if not
 *
 * @param {google.maps.Marker} marker The marker to remove
 * @return {boolean} Whether the marker was removed or not
 * @private
 */
MarkerClusterer.prototype.removeMarker_ = function(marker) {
  var index = -1;
  if (this.markers_.indexOf) {
    index = this.markers_.indexOf(marker);
  } else {
    for (var i = 0, m; m = this.markers_[i]; i++) {
      if (m == marker) {
        index = i;
        break;
      }
    }
  }

  if (index == -1) {
    // Marker is not in our list of markers.
    return false;
  }

  marker.setMap(null);

  this.markers_.splice(index, 1);

  return true;
};


/**
 * Remove a marker from the cluster.
 *
 * @param {google.maps.Marker} marker The marker to remove.
 * @param {boolean=} opt_nodraw Optional boolean to force no redraw.
 * @return {boolean} True if the marker was removed.
 */
MarkerClusterer.prototype.removeMarker = function(marker, opt_nodraw) {
  var removed = this.removeMarker_(marker);

  if (!opt_nodraw && removed) {
    this.resetViewport();
    this.redraw();
    return true;
  } else {
   return false;
  }
};


/**
 * Removes an array of markers from the cluster.
 *
 * @param {Array.<google.maps.Marker>} markers The markers to remove.
 * @param {boolean=} opt_nodraw Optional boolean to force no redraw.
 */
MarkerClusterer.prototype.removeMarkers = function(markers, opt_nodraw) {
  var removed = false;

  for (var i = 0, marker; marker = markers[i]; i++) {
    var r = this.removeMarker_(marker);
    removed = removed || r;
  }

  if (!opt_nodraw && removed) {
    this.resetViewport();
    this.redraw();
    return true;
  }
};


/**
 * Sets the clusterer's ready state.
 *
 * @param {boolean} ready The state.
 * @private
 */
MarkerClusterer.prototype.setReady_ = function(ready) {
  if (!this.ready_) {
    this.ready_ = ready;
    this.createClusters_();
  }
};


/**
 * Returns the number of clusters in the clusterer.
 *
 * @return {number} The number of clusters.
 */
MarkerClusterer.prototype.getTotalClusters = function() {
  return this.clusters_.length;
};


/**
 * Returns the google map that the clusterer is associated with.
 *
 * @return {google.maps.Map} The map.
 */
MarkerClusterer.prototype.getMap = function() {
  return this.map_;
};


/**
 * Sets the google map that the clusterer is associated with.
 *
 * @param {google.maps.Map} map The map.
 */
MarkerClusterer.prototype.setMap = function(map) {
  this.map_ = map;
};


/**
 * Returns the size of the grid.
 *
 * @return {number} The grid size.
 */
MarkerClusterer.prototype.getGridSize = function() {
  return this.gridSize_;
};


/**
 * Sets the size of the grid.
 *
 * @param {number} size The grid size.
 */
MarkerClusterer.prototype.setGridSize = function(size) {
  this.gridSize_ = size;
};


/**
 * Returns the min cluster size.
 *
 * @return {number} The grid size.
 */
MarkerClusterer.prototype.getMinClusterSize = function() {
  return this.minClusterSize_;
};

/**
 * Sets the min cluster size.
 *
 * @param {number} size The grid size.
 */
MarkerClusterer.prototype.setMinClusterSize = function(size) {
  this.minClusterSize_ = size;
};


/**
 * Extends a bounds object by the grid size.
 *
 * @param {google.maps.LatLngBounds} bounds The bounds to extend.
 * @return {google.maps.LatLngBounds} The extended bounds.
 */
MarkerClusterer.prototype.getExtendedBounds = function(bounds) {
  var projection = this.getProjection();

  // Turn the bounds into latlng.
  var tr = new google.maps.LatLng(bounds.getNorthEast().lat(),
      bounds.getNorthEast().lng());
  var bl = new google.maps.LatLng(bounds.getSouthWest().lat(),
      bounds.getSouthWest().lng());

  // Convert the points to pixels and the extend out by the grid size.
  var trPix = projection.fromLatLngToDivPixel(tr);
  trPix.x += this.gridSize_;
  trPix.y -= this.gridSize_;

  var blPix = projection.fromLatLngToDivPixel(bl);
  blPix.x -= this.gridSize_;
  blPix.y += this.gridSize_;

  // Convert the pixel points back to LatLng
  var ne = projection.fromDivPixelToLatLng(trPix);
  var sw = projection.fromDivPixelToLatLng(blPix);

  // Extend the bounds to contain the new bounds.
  bounds.extend(ne);
  bounds.extend(sw);

  return bounds;
};


/**
 * Determins if a marker is contained in a bounds.
 *
 * @param {google.maps.Marker} marker The marker to check.
 * @param {google.maps.LatLngBounds} bounds The bounds to check against.
 * @return {boolean} True if the marker is in the bounds.
 * @private
 */
MarkerClusterer.prototype.isMarkerInBounds_ = function(marker, bounds) {
  return bounds.contains(marker.getPosition());
};


/**
 * Clears all clusters and markers from the clusterer.
 */
MarkerClusterer.prototype.clearMarkers = function() {
  this.resetViewport(true);

  // Set the markers a empty array.
  this.markers_ = [];
};


/**
 * Clears all existing clusters and recreates them.
 * @param {boolean} opt_hide To also hide the marker.
 */
MarkerClusterer.prototype.resetViewport = function(opt_hide) {
  // Remove all the clusters
  for (var i = 0, cluster; cluster = this.clusters_[i]; i++) {
    cluster.remove();
  }

  // Reset the markers to not be added and to be invisible.
  for (var i = 0, marker; marker = this.markers_[i]; i++) {
    marker.isAdded = false;
    if (opt_hide) {
      marker.setMap(null);
    }
  }

  this.clusters_ = [];
};

/**
 *
 */
MarkerClusterer.prototype.repaint = function() {
  var oldClusters = this.clusters_.slice();
  this.clusters_.length = 0;
  this.resetViewport();
  this.redraw();

  // Remove the old clusters.
  // Do it in a timeout so the other clusters have been drawn first.
  window.setTimeout(function() {
    for (var i = 0, cluster; cluster = oldClusters[i]; i++) {
      cluster.remove();
    }
  }, 0);
};


/**
 * Redraws the clusters.
 */
MarkerClusterer.prototype.redraw = function() {
  this.createClusters_();
};


/**
 * Calculates the distance between two latlng locations in km.
 * @see http://www.movable-type.co.uk/scripts/latlong.html
 *
 * @param {google.maps.LatLng} p1 The first lat lng point.
 * @param {google.maps.LatLng} p2 The second lat lng point.
 * @return {number} The distance between the two points in km.
 * @private
*/
MarkerClusterer.prototype.distanceBetweenPoints_ = function(p1, p2) {
  if (!p1 || !p2) {
    return 0;
  }

  var R = 6371; // Radius of the Earth in km
  var dLat = (p2.lat() - p1.lat()) * Math.PI / 180;
  var dLon = (p2.lng() - p1.lng()) * Math.PI / 180;
  var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
    Math.cos(p1.lat() * Math.PI / 180) * Math.cos(p2.lat() * Math.PI / 180) *
    Math.sin(dLon / 2) * Math.sin(dLon / 2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  var d = R * c;
  return d;
};


/**
 * Add a marker to a cluster, or creates a new cluster.
 *
 * @param {google.maps.Marker} marker The marker to add.
 * @private
 */
MarkerClusterer.prototype.addToClosestCluster_ = function(marker) {
  var distance = 40000; // Some large number
  var clusterToAddTo = null;
  var pos = marker.getPosition();
  for (var i = 0, cluster; cluster = this.clusters_[i]; i++) {
    var center = cluster.getCenter();
    if (center) {
      var d = this.distanceBetweenPoints_(center, marker.getPosition());
      if (d < distance) {
        distance = d;
        clusterToAddTo = cluster;
      }
    }
  }

  if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {
    clusterToAddTo.addMarker(marker);
  } else {
    var cluster = new Cluster(this);
    cluster.addMarker(marker);
    this.clusters_.push(cluster);
  }
};


/**
 * Creates the clusters.
 *
 * @private
 */
MarkerClusterer.prototype.createClusters_ = function() {
  if (!this.ready_) {
    return;
  }

  // Get our current map view bounds.
  // Create a new bounds object so we don't affect the map.
  var mapBounds = new google.maps.LatLngBounds(this.map_.getBounds().getSouthWest(),
      this.map_.getBounds().getNorthEast());
  var bounds = this.getExtendedBounds(mapBounds);

  for (var i = 0, marker; marker = this.markers_[i]; i++) {
    if (!marker.isAdded && this.isMarkerInBounds_(marker, bounds)) {
      this.addToClosestCluster_(marker);
    }
  }
};


/**
 * A cluster that contains markers.
 *
 * @param {MarkerClusterer} markerClusterer The markerclusterer that this
 *     cluster is associated with.
 * @constructor
 * @ignore
 */
function Cluster(markerClusterer) {
  this.markerClusterer_ = markerClusterer;
  this.map_ = markerClusterer.getMap();
  this.gridSize_ = markerClusterer.getGridSize();
  this.minClusterSize_ = markerClusterer.getMinClusterSize();
  this.averageCenter_ = markerClusterer.isAverageCenter();
  this.center_ = null;
  this.markers_ = [];
  this.bounds_ = null;
  this.clusterIcon_ = new ClusterIcon(this, markerClusterer.getStyles(),
      markerClusterer.getGridSize());
}

/**
 * Determins if a marker is already added to the cluster.
 *
 * @param {google.maps.Marker} marker The marker to check.
 * @return {boolean} True if the marker is already added.
 */
Cluster.prototype.isMarkerAlreadyAdded = function(marker) {
  if (this.markers_.indexOf) {
    return this.markers_.indexOf(marker) != -1;
  } else {
    for (var i = 0, m; m = this.markers_[i]; i++) {
      if (m == marker) {
        return true;
      }
    }
  }
  return false;
};


/**
 * Add a marker the cluster.
 *
 * @param {google.maps.Marker} marker The marker to add.
 * @return {boolean} True if the marker was added.
 */
Cluster.prototype.addMarker = function(marker) {
  if (this.isMarkerAlreadyAdded(marker)) {
    return false;
  }

  if (!this.center_) {
    this.center_ = marker.getPosition();
    this.calculateBounds_();
  } else {
    if (this.averageCenter_) {
      var l = this.markers_.length + 1;
      var lat = (this.center_.lat() * (l-1) + marker.getPosition().lat()) / l;
      var lng = (this.center_.lng() * (l-1) + marker.getPosition().lng()) / l;
      this.center_ = new google.maps.LatLng(lat, lng);
      this.calculateBounds_();
    }
  }

  marker.isAdded = true;
  this.markers_.push(marker);

  var len = this.markers_.length;
  if (len < this.minClusterSize_ && marker.getMap() != this.map_) {
    // Min cluster size not reached so show the marker.
    marker.setMap(this.map_);
  }

  if (len == this.minClusterSize_) {
    // Hide the markers that were showing.
    for (var i = 0; i < len; i++) {
      this.markers_[i].setMap(null);
    }
  }

  if (len >= this.minClusterSize_) {
    marker.setMap(null);
  }

  this.updateIcon();
  return true;
};


/**
 * Returns the marker clusterer that the cluster is associated with.
 *
 * @return {MarkerClusterer} The associated marker clusterer.
 */
Cluster.prototype.getMarkerClusterer = function() {
  return this.markerClusterer_;
};


/**
 * Returns the bounds of the cluster.
 *
 * @return {google.maps.LatLngBounds} the cluster bounds.
 */
Cluster.prototype.getBounds = function() {
  var bounds = new google.maps.LatLngBounds(this.center_, this.center_);
  var markers = this.getMarkers();
  for (var i = 0, marker; marker = markers[i]; i++) {
    bounds.extend(marker.getPosition());
  }
  return bounds;
};


/**
 * Removes the cluster
 */
Cluster.prototype.remove = function() {
  this.clusterIcon_.remove();
  this.markers_.length = 0;
  delete this.markers_;
};


/**
 * Returns the center of the cluster.
 *
 * @return {number} The cluster center.
 */
Cluster.prototype.getSize = function() {
  return this.markers_.length;
};


/**
 * Returns the center of the cluster.
 *
 * @return {Array.<google.maps.Marker>} The cluster center.
 */
Cluster.prototype.getMarkers = function() {
  return this.markers_;
};


/**
 * Returns the center of the cluster.
 *
 * @return {google.maps.LatLng} The cluster center.
 */
Cluster.prototype.getCenter = function() {
  return this.center_;
};


/**
 * Calculated the extended bounds of the cluster with the grid.
 *
 * @private
 */
Cluster.prototype.calculateBounds_ = function() {
  var bounds = new google.maps.LatLngBounds(this.center_, this.center_);
  this.bounds_ = this.markerClusterer_.getExtendedBounds(bounds);
};


/**
 * Determines if a marker lies in the clusters bounds.
 *
 * @param {google.maps.Marker} marker The marker to check.
 * @return {boolean} True if the marker lies in the bounds.
 */
Cluster.prototype.isMarkerInClusterBounds = function(marker) {
  return this.bounds_.contains(marker.getPosition());
};


/**
 * Returns the map that the cluster is associated with.
 *
 * @return {google.maps.Map} The map.
 */
Cluster.prototype.getMap = function() {
  return this.map_;
};


/**
 * Updates the cluster icon
 */
Cluster.prototype.updateIcon = function() {
  var zoom = this.map_.getZoom();
  var mz = this.markerClusterer_.getMaxZoom();

  if (mz && zoom > mz) {
    // The zoom is greater than our max zoom so show all the markers in cluster.
    for (var i = 0, marker; marker = this.markers_[i]; i++) {
      marker.setMap(this.map_);
    }
    return;
  }

  if (this.markers_.length < this.minClusterSize_) {
    // Min cluster size not yet reached.
    this.clusterIcon_.hide();
    return;
  }

  var numStyles = this.markerClusterer_.getStyles().length;
  var sums = this.markerClusterer_.getCalculator()(this.markers_, numStyles);
  this.clusterIcon_.setCenter(this.center_);
  this.clusterIcon_.setSums(sums);
  this.clusterIcon_.show();
};


/**
 * A cluster icon
 *
 * @param {Cluster} cluster The cluster to be associated with.
 * @param {Object} styles An object that has style properties:
 *     'url': (string) The image url.
 *     'height': (number) The image height.
 *     'width': (number) The image width.
 *     'anchor': (Array) The anchor position of the label text.
 *     'textColor': (string) The text color.
 *     'textSize': (number) The text size.
 *     'backgroundPosition: (string) The background postition x, y.
 * @param {number=} opt_padding Optional padding to apply to the cluster icon.
 * @constructor
 * @extends google.maps.OverlayView
 * @ignore
 */
function ClusterIcon(cluster, styles, opt_padding) {
  cluster.getMarkerClusterer().extend(ClusterIcon, google.maps.OverlayView);

  this.styles_ = styles;
  this.padding_ = opt_padding || 0;
  this.cluster_ = cluster;
  this.center_ = null;
  this.map_ = cluster.getMap();
  this.div_ = null;
  this.sums_ = null;
  this.visible_ = false;

  this.setMap(this.map_);
}


/**
 * Triggers the clusterclick event and zoom's if the option is set.
 */
ClusterIcon.prototype.triggerClusterClick = function() {
  var markerClusterer = this.cluster_.getMarkerClusterer();

  // Trigger the clusterclick event.
  google.maps.event.trigger(markerClusterer, 'clusterclick', this.cluster_);

  if (markerClusterer.isZoomOnClick()) {
    // Zoom into the cluster.
    this.map_.fitBounds(this.cluster_.getBounds());
  }
};


/**
 * Adding the cluster icon to the dom.
 * @ignore
 */
ClusterIcon.prototype.onAdd = function() {
  this.div_ = document.createElement('DIV');
  if (this.visible_) {
    var pos = this.getPosFromLatLng_(this.center_);
    this.div_.style.cssText = this.createCss(pos);
    this.div_.innerHTML = this.sums_.text;
  }

  var panes = this.getPanes();
  panes.overlayMouseTarget.appendChild(this.div_);

  var that = this;
  google.maps.event.addDomListener(this.div_, 'click', function() {
    that.triggerClusterClick();
  });
};


/**
 * Returns the position to place the div dending on the latlng.
 *
 * @param {google.maps.LatLng} latlng The position in latlng.
 * @return {google.maps.Point} The position in pixels.
 * @private
 */
ClusterIcon.prototype.getPosFromLatLng_ = function(latlng) {
  var pos = this.getProjection().fromLatLngToDivPixel(latlng);
  pos.x -= parseInt(this.width_ / 2, 10);
  pos.y -= parseInt(this.height_ / 2, 10);
  return pos;
};


/**
 * Draw the icon.
 * @ignore
 */
ClusterIcon.prototype.draw = function() {
  if (this.visible_) {
    var pos = this.getPosFromLatLng_(this.center_);
    this.div_.style.top = pos.y + 'px';
    this.div_.style.left = pos.x + 'px';
  }
};


/**
 * Hide the icon.
 */
ClusterIcon.prototype.hide = function() {
  if (this.div_) {
    this.div_.style.display = 'none';
  }
  this.visible_ = false;
};


/**
 * Position and show the icon.
 */
ClusterIcon.prototype.show = function() {
  if (this.div_) {
    var pos = this.getPosFromLatLng_(this.center_);
    this.div_.style.cssText = this.createCss(pos);
    this.div_.style.display = '';
  }
  this.visible_ = true;
};


/**
 * Remove the icon from the map
 */
ClusterIcon.prototype.remove = function() {
  this.setMap(null);
};


/**
 * Implementation of the onRemove interface.
 * @ignore
 */
ClusterIcon.prototype.onRemove = function() {
  if (this.div_ && this.div_.parentNode) {
    this.hide();
    this.div_.parentNode.removeChild(this.div_);
    this.div_ = null;
  }
};


/**
 * Set the sums of the icon.
 *
 * @param {Object} sums The sums containing:
 *   'text': (string) The text to display in the icon.
 *   'index': (number) The style index of the icon.
 */
ClusterIcon.prototype.setSums = function(sums) {
  this.sums_ = sums;
  this.text_ = sums.text;
  this.index_ = sums.index;
  if (this.div_) {
    this.div_.innerHTML = sums.text;
  }

  this.useStyle();
};


/**
 * Sets the icon to the the styles.
 */
ClusterIcon.prototype.useStyle = function() {
  var index = Math.max(0, this.sums_.index - 1);
  index = Math.min(this.styles_.length - 1, index);
  var style = this.styles_[index];
  this.url_ = style['url'];
  this.height_ = style['height'];
  this.width_ = style['width'];
  this.textColor_ = style['textColor'];
  this.anchor_ = style['anchor'];
  this.textSize_ = style['textSize'];
  this.backgroundPosition_ = style['backgroundPosition'];
};


/**
 * Sets the center of the icon.
 *
 * @param {google.maps.LatLng} center The latlng to set as the center.
 */
ClusterIcon.prototype.setCenter = function(center) {
  this.center_ = center;
};


/**
 * Create the css text based on the position of the icon.
 *
 * @param {google.maps.Point} pos The position.
 * @return {string} The css style text.
 */
ClusterIcon.prototype.createCss = function(pos) {
  var style = [];
  style.push('background-image:url(' + this.url_ + ');');
  var backgroundPosition = this.backgroundPosition_ ? this.backgroundPosition_ : '0 0';
  style.push('background-position:' + backgroundPosition + ';');

  if (typeof this.anchor_ === 'object') {
    if (typeof this.anchor_[0] === 'number' && this.anchor_[0] > 0 &&
        this.anchor_[0] < this.height_) {
      style.push('height:' + (this.height_ - this.anchor_[0]) +
          'px; padding-top:' + this.anchor_[0] + 'px;');
    } else {
      style.push('height:' + this.height_ + 'px; line-height:' + this.height_ +
          'px;');
    }
    if (typeof this.anchor_[1] === 'number' && this.anchor_[1] > 0 &&
        this.anchor_[1] < this.width_) {
      style.push('width:' + (this.width_ - this.anchor_[1]) +
          'px; padding-left:' + this.anchor_[1] + 'px;');
    } else {
      style.push('width:' + this.width_ + 'px; text-align:center;');
    }
  } else {
    style.push('height:' + this.height_ + 'px; line-height:' +
        this.height_ + 'px; width:' + this.width_ + 'px; text-align:center;');
  }

  var txtColor = this.textColor_ ? this.textColor_ : 'black';
  var txtSize = this.textSize_ ? this.textSize_ : 11;

  style.push('cursor:pointer; top:' + pos.y + 'px; left:' +
      pos.x + 'px; color:' + txtColor + '; position:absolute; font-size:' +
      txtSize + 'px; font-family:Arial,sans-serif; font-weight:bold');
  return style.join('');
};


// Export Symbols for Closure
// If you are not going to compile with closure then you can remove the
// code below.
window['MarkerClusterer'] = MarkerClusterer;
MarkerClusterer.prototype['addMarker'] = MarkerClusterer.prototype.addMarker;
MarkerClusterer.prototype['addMarkers'] = MarkerClusterer.prototype.addMarkers;
MarkerClusterer.prototype['clearMarkers'] =
    MarkerClusterer.prototype.clearMarkers;
MarkerClusterer.prototype['fitMapToMarkers'] =
    MarkerClusterer.prototype.fitMapToMarkers;
MarkerClusterer.prototype['getCalculator'] =
    MarkerClusterer.prototype.getCalculator;
MarkerClusterer.prototype['getGridSize'] =
    MarkerClusterer.prototype.getGridSize;
MarkerClusterer.prototype['getExtendedBounds'] =
    MarkerClusterer.prototype.getExtendedBounds;
MarkerClusterer.prototype['getMap'] = MarkerClusterer.prototype.getMap;
MarkerClusterer.prototype['getMarkers'] = MarkerClusterer.prototype.getMarkers;
MarkerClusterer.prototype['getMaxZoom'] = MarkerClusterer.prototype.getMaxZoom;
MarkerClusterer.prototype['getStyles'] = MarkerClusterer.prototype.getStyles;
MarkerClusterer.prototype['getTotalClusters'] =
    MarkerClusterer.prototype.getTotalClusters;
MarkerClusterer.prototype['getTotalMarkers'] =
    MarkerClusterer.prototype.getTotalMarkers;
MarkerClusterer.prototype['redraw'] = MarkerClusterer.prototype.redraw;
MarkerClusterer.prototype['removeMarker'] =
    MarkerClusterer.prototype.removeMarker;
MarkerClusterer.prototype['removeMarkers'] =
    MarkerClusterer.prototype.removeMarkers;
MarkerClusterer.prototype['resetViewport'] =
    MarkerClusterer.prototype.resetViewport;
MarkerClusterer.prototype['repaint'] =
    MarkerClusterer.prototype.repaint;
MarkerClusterer.prototype['setCalculator'] =
    MarkerClusterer.prototype.setCalculator;
MarkerClusterer.prototype['setGridSize'] =
    MarkerClusterer.prototype.setGridSize;
MarkerClusterer.prototype['setMaxZoom'] =
    MarkerClusterer.prototype.setMaxZoom;
MarkerClusterer.prototype['onAdd'] = MarkerClusterer.prototype.onAdd;
MarkerClusterer.prototype['draw'] = MarkerClusterer.prototype.draw;

Cluster.prototype['getCenter'] = Cluster.prototype.getCenter;
Cluster.prototype['getSize'] = Cluster.prototype.getSize;
Cluster.prototype['getMarkers'] = Cluster.prototype.getMarkers;

ClusterIcon.prototype['onAdd'] = ClusterIcon.prototype.onAdd;
ClusterIcon.prototype['draw'] = ClusterIcon.prototype.draw;
ClusterIcon.prototype['onRemove'] = ClusterIcon.prototype.onRemove;

Object.keys = Object.keys || function(o) {  
    var result = [];  
    for(var name in o) {  
        if (o.hasOwnProperty(name))  
          result.push(name);  
    }  
    return result;  
};/* == jquery mousewheel plugin == Version: 3.1.11, License: MIT License (MIT) */
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.11",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b)["offsetParent"in a.fn?"offsetParent":"parent"]();return c.length||(c=a("body")),parseInt(c.css("fontSize"),10)},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});
/* == malihu jquery custom scrollbar plugin == Version: 3.0.4, License: MIT License (MIT) */
(function(b,a,c){(function(d){d(jQuery)}(function(j){var g="mCustomScrollbar",d="mCS",m=".mCustomScrollbar",h={setWidth:false,setHeight:false,setTop:0,setLeft:0,axis:"y",scrollbarPosition:"inside",scrollInertia:950,autoDraggerLength:true,autoHideScrollbar:false,autoExpandScrollbar:false,alwaysShowScrollbar:0,snapAmount:null,snapOffset:0,mouseWheel:{enable:true,scrollAmount:"auto",axis:"y",preventDefault:false,deltaFactor:"auto",normalizeDelta:false,invert:false,disableOver:["select","option","keygen","datalist","textarea"]},scrollButtons:{enable:false,scrollType:"stepless",scrollAmount:"auto"},keyboard:{enable:true,scrollType:"stepless",scrollAmount:"auto"},contentTouchScroll:25,advanced:{autoExpandHorizontalScroll:false,autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",updateOnContentResize:true,updateOnImageLoad:true,updateOnSelectorChange:false},theme:"light",callbacks:{onScrollStart:false,onScroll:false,onTotalScroll:false,onTotalScrollBack:false,whileScrolling:false,onTotalScrollOffset:0,onTotalScrollBackOffset:0,alwaysTriggerOffsets:true,onOverflowY:false,onOverflowX:false,onOverflowYNone:false,onOverflowXNone:false},live:false,liveSelector:null},l=0,o={},f=function(p){if(o[p]){clearTimeout(o[p]);i._delete.call(null,o[p])}},k=(b.attachEvent&&!b.addEventListener)?1:0,n=false,e={init:function(q){var q=j.extend(true,{},h,q),p=i._selector.call(this);if(q.live){var s=q.liveSelector||this.selector||m,r=j(s);if(q.live==="off"){f(s);return}o[s]=setTimeout(function(){r.mCustomScrollbar(q);if(q.live==="once"&&r.length){f(s)}},500)}else{f(s)}q.setWidth=(q.set_width)?q.set_width:q.setWidth;q.setHeight=(q.set_height)?q.set_height:q.setHeight;q.axis=(q.horizontalScroll)?"x":i._findAxis.call(null,q.axis);q.scrollInertia=q.scrollInertia>0&&q.scrollInertia<17?17:q.scrollInertia;if(typeof q.mouseWheel!=="object"&&q.mouseWheel==true){q.mouseWheel={enable:true,scrollAmount:"auto",axis:"y",preventDefault:false,deltaFactor:"auto",normalizeDelta:false,invert:false}}q.mouseWheel.scrollAmount=!q.mouseWheelPixels?q.mouseWheel.scrollAmount:q.mouseWheelPixels;q.mouseWheel.normalizeDelta=!q.advanced.normalizeMouseWheelDelta?q.mouseWheel.normalizeDelta:q.advanced.normalizeMouseWheelDelta;q.scrollButtons.scrollType=i._findScrollButtonsType.call(null,q.scrollButtons.scrollType);i._theme.call(null,q);return j(p).each(function(){var u=j(this);if(!u.data(d)){u.data(d,{idx:++l,opt:q,scrollRatio:{y:null,x:null},overflowed:null,contentReset:{y:null,x:null},bindEvents:false,tweenRunning:false,sequential:{},langDir:u.css("direction"),cbOffsets:null,trigger:null});var w=u.data(d).opt,v=u.data("mcs-axis"),t=u.data("mcs-scrollbar-position"),x=u.data("mcs-theme");if(v){w.axis=v}if(t){w.scrollbarPosition=t}if(x){w.theme=x;i._theme.call(null,w)}i._pluginMarkup.call(this);e.update.call(null,u)}})},update:function(q){var p=q||i._selector.call(this);return j(p).each(function(){var t=j(this);if(t.data(d)){var v=t.data(d),u=v.opt,r=j("#mCSB_"+v.idx+"_container"),s=[j("#mCSB_"+v.idx+"_dragger_vertical"),j("#mCSB_"+v.idx+"_dragger_horizontal")];if(!r.length){return}if(v.tweenRunning){i._stop.call(null,t)}if(t.hasClass("mCS_disabled")){t.removeClass("mCS_disabled")}if(t.hasClass("mCS_destroyed")){t.removeClass("mCS_destroyed")}i._maxHeight.call(this);i._expandContentHorizontally.call(this);if(u.axis!=="y"&&!u.advanced.autoExpandHorizontalScroll){r.css("width",i._contentWidth(r.children()))}v.overflowed=i._overflowed.call(this);i._scrollbarVisibility.call(this);if(u.autoDraggerLength){i._setDraggerLength.call(this)}i._scrollRatio.call(this);i._bindEvents.call(this);var w=[Math.abs(r[0].offsetTop),Math.abs(r[0].offsetLeft)];if(u.axis!=="x"){if(!v.overflowed[0]){i._resetContentPosition.call(this);if(u.axis==="y"){i._unbindEvents.call(this)}else{if(u.axis==="yx"&&v.overflowed[1]){i._scrollTo.call(this,t,w[1].toString(),{dir:"x",dur:0,overwrite:"none"})}}}else{if(s[0].height()>s[0].parent().height()){i._resetContentPosition.call(this)}else{i._scrollTo.call(this,t,w[0].toString(),{dir:"y",dur:0,overwrite:"none"});v.contentReset.y=null}}}if(u.axis!=="y"){if(!v.overflowed[1]){i._resetContentPosition.call(this);if(u.axis==="x"){i._unbindEvents.call(this)}else{if(u.axis==="yx"&&v.overflowed[0]){i._scrollTo.call(this,t,w[0].toString(),{dir:"y",dur:0,overwrite:"none"})}}}else{if(s[1].width()>s[1].parent().width()){i._resetContentPosition.call(this)}else{i._scrollTo.call(this,t,w[1].toString(),{dir:"x",dur:0,overwrite:"none"});v.contentReset.x=null}}}i._autoUpdate.call(this)}})},scrollTo:function(r,q){if(typeof r=="undefined"||r==null){return}var p=i._selector.call(this);return j(p).each(function(){var u=j(this);if(u.data(d)){var x=u.data(d),w=x.opt,v={trigger:"external",scrollInertia:w.scrollInertia,scrollEasing:"mcsEaseInOut",moveDragger:false,timeout:60,callbacks:true,onStart:true,onUpdate:true,onComplete:true},s=j.extend(true,{},v,q),y=i._arr.call(this,r),t=s.scrollInertia>0&&s.scrollInertia<17?17:s.scrollInertia;y[0]=i._to.call(this,y[0],"y");y[1]=i._to.call(this,y[1],"x");if(s.moveDragger){y[0]*=x.scrollRatio.y;y[1]*=x.scrollRatio.x}s.dur=t;setTimeout(function(){if(y[0]!==null&&typeof y[0]!=="undefined"&&w.axis!=="x"&&x.overflowed[0]){s.dir="y";s.overwrite="all";i._scrollTo.call(this,u,y[0].toString(),s)}if(y[1]!==null&&typeof y[1]!=="undefined"&&w.axis!=="y"&&x.overflowed[1]){s.dir="x";s.overwrite="none";i._scrollTo.call(this,u,y[1].toString(),s)}},s.timeout)}})},stop:function(){var p=i._selector.call(this);return j(p).each(function(){var q=j(this);if(q.data(d)){i._stop.call(null,q)}})},disable:function(q){var p=i._selector.call(this);return j(p).each(function(){var r=j(this);if(r.data(d)){var t=r.data(d),s=t.opt;i._autoUpdate.call(this,"remove");i._unbindEvents.call(this);if(q){i._resetContentPosition.call(this)}i._scrollbarVisibility.call(this,true);r.addClass("mCS_disabled")}})},destroy:function(){var p=i._selector.call(this);return j(p).each(function(){var s=j(this);if(s.data(d)){var u=s.data(d),t=u.opt,q=j("#mCSB_"+u.idx),r=j("#mCSB_"+u.idx+"_container"),v=j(".mCSB_"+u.idx+"_scrollbar");if(t.live){f(p)}i._autoUpdate.call(this,"remove");i._unbindEvents.call(this);i._resetContentPosition.call(this);s.removeData(d);i._delete.call(null,this.mcs);v.remove();q.replaceWith(r.contents());s.removeClass(g+" _"+d+"_"+u.idx+" mCS-autoHide mCS-dir-rtl mCS_no_scrollbar mCS_disabled").addClass("mCS_destroyed")}})}},i={_selector:function(){return(typeof j(this)!=="object"||j(this).length<1)?m:this},_theme:function(s){var r=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"],q=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"],p=["minimal","minimal-dark"],u=["minimal","minimal-dark"],t=["minimal","minimal-dark"];s.autoDraggerLength=j.inArray(s.theme,r)>-1?false:s.autoDraggerLength;s.autoExpandScrollbar=j.inArray(s.theme,q)>-1?false:s.autoExpandScrollbar;s.scrollButtons.enable=j.inArray(s.theme,p)>-1?false:s.scrollButtons.enable;s.autoHideScrollbar=j.inArray(s.theme,u)>-1?true:s.autoHideScrollbar;s.scrollbarPosition=j.inArray(s.theme,t)>-1?"outside":s.scrollbarPosition},_findAxis:function(p){return(p==="yx"||p==="xy"||p==="auto")?"yx":(p==="x"||p==="horizontal")?"x":"y"},_findScrollButtonsType:function(p){return(p==="stepped"||p==="pixels"||p==="step"||p==="click")?"stepped":"stepless"},_pluginMarkup:function(){var y=j(this),x=y.data(d),r=x.opt,t=r.autoExpandScrollbar?" mCSB_scrollTools_onDrag_expand":"",B=["<div id='mCSB_"+x.idx+"_scrollbar_vertical' class='mCSB_scrollTools mCSB_"+x.idx+"_scrollbar mCS-"+r.theme+" mCSB_scrollTools_vertical"+t+"'><div class='mCSB_draggerContainer'><div id='mCSB_"+x.idx+"_dragger_vertical' class='mCSB_dragger' style='position:absolute;' oncontextmenu='return false;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>","<div id='mCSB_"+x.idx+"_scrollbar_horizontal' class='mCSB_scrollTools mCSB_"+x.idx+"_scrollbar mCS-"+r.theme+" mCSB_scrollTools_horizontal"+t+"'><div class='mCSB_draggerContainer'><div id='mCSB_"+x.idx+"_dragger_horizontal' class='mCSB_dragger' style='position:absolute;' oncontextmenu='return false;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>"],u=r.axis==="yx"?"mCSB_vertical_horizontal":r.axis==="x"?"mCSB_horizontal":"mCSB_vertical",w=r.axis==="yx"?B[0]+B[1]:r.axis==="x"?B[1]:B[0],v=r.axis==="yx"?"<div id='mCSB_"+x.idx+"_container_wrapper' class='mCSB_container_wrapper' />":"",s=r.autoHideScrollbar?" mCS-autoHide":"",p=(r.axis!=="x"&&x.langDir==="rtl")?" mCS-dir-rtl":"";if(r.setWidth){y.css("width",r.setWidth)}if(r.setHeight){y.css("height",r.setHeight)}r.setLeft=(r.axis!=="y"&&x.langDir==="rtl")?"989999px":r.setLeft;y.addClass(g+" _"+d+"_"+x.idx+s+p).wrapInner("<div id='mCSB_"+x.idx+"' class='mCustomScrollBox mCS-"+r.theme+" "+u+"'><div id='mCSB_"+x.idx+"_container' class='mCSB_container' style='position:relative; top:"+r.setTop+"; left:"+r.setLeft+";' dir="+x.langDir+" /></div>");var q=j("#mCSB_"+x.idx),z=j("#mCSB_"+x.idx+"_container");if(r.axis!=="y"&&!r.advanced.autoExpandHorizontalScroll){z.css("width",i._contentWidth(z.children()))}if(r.scrollbarPosition==="outside"){if(y.css("position")==="static"){y.css("position","relative")}y.css("overflow","visible");q.addClass("mCSB_outside").after(w)}else{q.addClass("mCSB_inside").append(w);z.wrap(v)}i._scrollButtons.call(this);var A=[j("#mCSB_"+x.idx+"_dragger_vertical"),j("#mCSB_"+x.idx+"_dragger_horizontal")];A[0].css("min-height",A[0].height());A[1].css("min-width",A[1].width())},_contentWidth:function(p){return Math.max.apply(Math,p.map(function(){return j(this).outerWidth(true)}).get())},_expandContentHorizontally:function(){var q=j(this),s=q.data(d),r=s.opt,p=j("#mCSB_"+s.idx+"_container");if(r.advanced.autoExpandHorizontalScroll&&r.axis!=="y"){p.css({position:"absolute",width:"auto"}).wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />").css({width:(Math.ceil(p[0].getBoundingClientRect().right+0.4)-Math.floor(p[0].getBoundingClientRect().left)),position:"relative"}).unwrap()}},_scrollButtons:function(){var s=j(this),u=s.data(d),t=u.opt,q=j(".mCSB_"+u.idx+"_scrollbar:first"),r=["<a href='#' class='mCSB_buttonUp' oncontextmenu='return false;' />","<a href='#' class='mCSB_buttonDown' oncontextmenu='return false;' />","<a href='#' class='mCSB_buttonLeft' oncontextmenu='return false;' />","<a href='#' class='mCSB_buttonRight' oncontextmenu='return false;' />"],p=[(t.axis==="x"?r[2]:r[0]),(t.axis==="x"?r[3]:r[1]),r[2],r[3]];if(t.scrollButtons.enable){q.prepend(p[0]).append(p[1]).next(".mCSB_scrollTools").prepend(p[2]).append(p[3])}},_maxHeight:function(){var t=j(this),w=t.data(d),v=w.opt,r=j("#mCSB_"+w.idx),q=t.css("max-height"),s=q.indexOf("%")!==-1,p=t.css("box-sizing");if(q!=="none"){var u=s?t.parent().height()*parseInt(q)/100:parseInt(q);if(p==="border-box"){u-=((t.innerHeight()-t.height())+(t.outerHeight()-t.innerHeight()))}r.css("max-height",Math.round(u))}},_setDraggerLength:function(){var u=j(this),s=u.data(d),p=j("#mCSB_"+s.idx),v=j("#mCSB_"+s.idx+"_container"),y=[j("#mCSB_"+s.idx+"_dragger_vertical"),j("#mCSB_"+s.idx+"_dragger_horizontal")],t=[p.height()/v.outerHeight(false),p.width()/v.outerWidth(false)],q=[parseInt(y[0].css("min-height")),Math.round(t[0]*y[0].parent().height()),parseInt(y[1].css("min-width")),Math.round(t[1]*y[1].parent().width())],r=k&&(q[1]<q[0])?q[0]:q[1],x=k&&(q[3]<q[2])?q[2]:q[3];y[0].css({height:r,"max-height":(y[0].parent().height()-10)}).find(".mCSB_dragger_bar").css({"line-height":q[0]+"px"});y[1].css({width:x,"max-width":(y[1].parent().width()-10)})},_scrollRatio:function(){var t=j(this),v=t.data(d),q=j("#mCSB_"+v.idx),r=j("#mCSB_"+v.idx+"_container"),s=[j("#mCSB_"+v.idx+"_dragger_vertical"),j("#mCSB_"+v.idx+"_dragger_horizontal")],u=[r.outerHeight(false)-q.height(),r.outerWidth(false)-q.width()],p=[u[0]/(s[0].parent().height()-s[0].height()),u[1]/(s[1].parent().width()-s[1].width())];v.scrollRatio={y:p[0],x:p[1]}},_onDragClasses:function(r,t,q){var s=q?"mCSB_dragger_onDrag_expanded":"",p=["mCSB_dragger_onDrag","mCSB_scrollTools_onDrag"],u=r.closest(".mCSB_scrollTools");if(t==="active"){r.toggleClass(p[0]+" "+s);u.toggleClass(p[1]);r[0]._draggable=r[0]._draggable?0:1}else{if(!r[0]._draggable){if(t==="hide"){r.removeClass(p[0]);u.removeClass(p[1])}else{r.addClass(p[0]);u.addClass(p[1])}}}},_overflowed:function(){var t=j(this),u=t.data(d),q=j("#mCSB_"+u.idx),s=j("#mCSB_"+u.idx+"_container"),r=u.overflowed==null?s.height():s.outerHeight(false),p=u.overflowed==null?s.width():s.outerWidth(false);return[r>q.height(),p>q.width()]},_resetContentPosition:function(){var t=j(this),v=t.data(d),u=v.opt,q=j("#mCSB_"+v.idx),r=j("#mCSB_"+v.idx+"_container"),s=[j("#mCSB_"+v.idx+"_dragger_vertical"),j("#mCSB_"+v.idx+"_dragger_horizontal")];i._stop(t);if((u.axis!=="x"&&!v.overflowed[0])||(u.axis==="y"&&v.overflowed[0])){s[0].add(r).css("top",0);i._scrollTo(t,"_resetY")}if((u.axis!=="y"&&!v.overflowed[1])||(u.axis==="x"&&v.overflowed[1])){var p=dx=0;if(v.langDir==="rtl"){p=q.width()-r.outerWidth(false);dx=Math.abs(p/v.scrollRatio.x)}r.css("left",p);s[1].css("left",dx);i._scrollTo(t,"_resetX")}},_bindEvents:function(){var r=j(this),t=r.data(d),s=t.opt;if(!t.bindEvents){i._draggable.call(this);if(s.contentTouchScroll){i._contentDraggable.call(this)}if(s.mouseWheel.enable){function q(){p=setTimeout(function(){if(!j.event.special.mousewheel){q()}else{clearTimeout(p);i._mousewheel.call(r[0])}},1000)}var p;q()}i._draggerRail.call(this);i._wrapperScroll.call(this);if(s.advanced.autoScrollOnFocus){i._focus.call(this)}if(s.scrollButtons.enable){i._buttons.call(this)}if(s.keyboard.enable){i._keyboard.call(this)}t.bindEvents=true}},_unbindEvents:function(){var s=j(this),t=s.data(d),p=d+"_"+t.idx,u=".mCSB_"+t.idx+"_scrollbar",r=j("#mCSB_"+t.idx+",#mCSB_"+t.idx+"_container,#mCSB_"+t.idx+"_container_wrapper,"+u+" .mCSB_draggerContainer,#mCSB_"+t.idx+"_dragger_vertical,#mCSB_"+t.idx+"_dragger_horizontal,"+u+">a"),q=j("#mCSB_"+t.idx+"_container");if(t.bindEvents){j(a).unbind("."+p);r.each(function(){j(this).unbind("."+p)});clearTimeout(s[0]._focusTimeout);i._delete.call(null,s[0]._focusTimeout);clearTimeout(t.sequential.step);i._delete.call(null,t.sequential.step);clearTimeout(q[0].onCompleteTimeout);i._delete.call(null,q[0].onCompleteTimeout);t.bindEvents=false}},_scrollbarVisibility:function(q){var t=j(this),v=t.data(d),u=v.opt,p=j("#mCSB_"+v.idx+"_container_wrapper"),r=p.length?p:j("#mCSB_"+v.idx+"_container"),w=[j("#mCSB_"+v.idx+"_scrollbar_vertical"),j("#mCSB_"+v.idx+"_scrollbar_horizontal")],s=[w[0].find(".mCSB_dragger"),w[1].find(".mCSB_dragger")];if(u.axis!=="x"){if(v.overflowed[0]&&!q){w[0].add(s[0]).add(w[0].children("a")).css("display","block");r.removeClass("mCS_no_scrollbar_y mCS_y_hidden")}else{if(u.alwaysShowScrollbar){if(u.alwaysShowScrollbar!==2){s[0].add(w[0].children("a")).css("display","none")}r.removeClass("mCS_y_hidden")}else{w[0].css("display","none");r.addClass("mCS_y_hidden")}r.addClass("mCS_no_scrollbar_y")}}if(u.axis!=="y"){if(v.overflowed[1]&&!q){w[1].add(s[1]).add(w[1].children("a")).css("display","block");r.removeClass("mCS_no_scrollbar_x mCS_x_hidden")}else{if(u.alwaysShowScrollbar){if(u.alwaysShowScrollbar!==2){s[1].add(w[1].children("a")).css("display","none")}r.removeClass("mCS_x_hidden")}else{w[1].css("display","none");r.addClass("mCS_x_hidden")}r.addClass("mCS_no_scrollbar_x")}}if(!v.overflowed[0]&&!v.overflowed[1]){t.addClass("mCS_no_scrollbar")}else{t.removeClass("mCS_no_scrollbar")}},_coordinates:function(q){var p=q.type;switch(p){case"pointerdown":case"MSPointerDown":case"pointermove":case"MSPointerMove":case"pointerup":case"MSPointerUp":return[q.originalEvent.pageY,q.originalEvent.pageX];break;case"touchstart":case"touchmove":case"touchend":var r=q.originalEvent.touches[0]||q.originalEvent.changedTouches[0];return[r.pageY,r.pageX];break;default:return[q.pageY,q.pageX]}},_draggable:function(){var u=j(this),s=u.data(d),p=s.opt,r=d+"_"+s.idx,t=["mCSB_"+s.idx+"_dragger_vertical","mCSB_"+s.idx+"_dragger_horizontal"],v=j("#mCSB_"+s.idx+"_container"),w=j("#"+t[0]+",#"+t[1]),A,y,z;w.bind("mousedown."+r+" touchstart."+r+" pointerdown."+r+" MSPointerDown."+r,function(E){E.stopImmediatePropagation();E.preventDefault();if(!i._mouseBtnLeft(E)){return}n=true;if(k){a.onselectstart=function(){return false}}x(false);i._stop(u);A=j(this);var F=A.offset(),G=i._coordinates(E)[0]-F.top,B=i._coordinates(E)[1]-F.left,D=A.height()+F.top,C=A.width()+F.left;if(G<D&&G>0&&B<C&&B>0){y=G;z=B}i._onDragClasses(A,"active",p.autoExpandScrollbar)}).bind("touchmove."+r,function(C){C.stopImmediatePropagation();C.preventDefault();var D=A.offset(),E=i._coordinates(C)[0]-D.top,B=i._coordinates(C)[1]-D.left;q(y,z,E,B)});j(a).bind("mousemove."+r+" pointermove."+r+" MSPointerMove."+r,function(C){if(A){var D=A.offset(),E=i._coordinates(C)[0]-D.top,B=i._coordinates(C)[1]-D.left;if(y===E){return}q(y,z,E,B)}}).add(w).bind("mouseup."+r+" touchend."+r+" pointerup."+r+" MSPointerUp."+r,function(B){if(A){i._onDragClasses(A,"active",p.autoExpandScrollbar);A=null}n=false;if(k){a.onselectstart=null}x(true)});function x(B){var C=v.find("iframe");if(!C.length){return}var D=!B?"none":"auto";C.css("pointer-events",D)}function q(D,E,G,B){v[0].idleTimer=p.scrollInertia<233?250:0;if(A.attr("id")===t[1]){var C="x",F=((A[0].offsetLeft-E)+B)*s.scrollRatio.x}else{var C="y",F=((A[0].offsetTop-D)+G)*s.scrollRatio.y}i._scrollTo(u,F.toString(),{dir:C,drag:true})}},_contentDraggable:function(){var y=j(this),K=y.data(d),I=K.opt,F=d+"_"+K.idx,v=j("#mCSB_"+K.idx),z=j("#mCSB_"+K.idx+"_container"),w=[j("#mCSB_"+K.idx+"_dragger_vertical"),j("#mCSB_"+K.idx+"_dragger_horizontal")],E,G,L,M,C=[],D=[],H,A,u,t,J,x,r=0,q,s=I.axis==="yx"?"none":"all";z.bind("touchstart."+F+" pointerdown."+F+" MSPointerDown."+F,function(N){if(!i._pointerTouch(N)||n){return}var O=z.offset();E=i._coordinates(N)[0]-O.top;G=i._coordinates(N)[1]-O.left}).bind("touchmove."+F+" pointermove."+F+" MSPointerMove."+F,function(Q){if(!i._pointerTouch(Q)||n){return}Q.stopImmediatePropagation();A=i._getTime();var P=v.offset(),S=i._coordinates(Q)[0]-P.top,U=i._coordinates(Q)[1]-P.left,R="mcsLinearOut";C.push(S);D.push(U);if(K.overflowed[0]){var O=w[0].parent().height()-w[0].height(),T=((E-S)>0&&(S-E)>-(O*K.scrollRatio.y))}if(K.overflowed[1]){var N=w[1].parent().width()-w[1].width(),V=((G-U)>0&&(U-G)>-(N*K.scrollRatio.x))}if(T||V){Q.preventDefault()}x=I.axis==="yx"?[(E-S),(G-U)]:I.axis==="x"?[null,(G-U)]:[(E-S),null];z[0].idleTimer=250;if(K.overflowed[0]){B(x[0],r,R,"y","all",true)}if(K.overflowed[1]){B(x[1],r,R,"x",s,true)}});v.bind("touchstart."+F+" pointerdown."+F+" MSPointerDown."+F,function(N){if(!i._pointerTouch(N)||n){return}N.stopImmediatePropagation();i._stop(y);H=i._getTime();var O=v.offset();L=i._coordinates(N)[0]-O.top;M=i._coordinates(N)[1]-O.left;C=[];D=[]}).bind("touchend."+F+" pointerup."+F+" MSPointerUp."+F,function(P){if(!i._pointerTouch(P)||n){return}P.stopImmediatePropagation();u=i._getTime();var N=v.offset(),T=i._coordinates(P)[0]-N.top,V=i._coordinates(P)[1]-N.left;if((u-A)>30){return}J=1000/(u-H);var Q="mcsEaseOut",R=J<2.5,W=R?[C[C.length-2],D[D.length-2]]:[0,0];t=R?[(T-W[0]),(V-W[1])]:[T-L,V-M];var O=[Math.abs(t[0]),Math.abs(t[1])];J=R?[Math.abs(t[0]/4),Math.abs(t[1]/4)]:[J,J];var U=[Math.abs(z[0].offsetTop)-(t[0]*p((O[0]/J[0]),J[0])),Math.abs(z[0].offsetLeft)-(t[1]*p((O[1]/J[1]),J[1]))];x=I.axis==="yx"?[U[0],U[1]]:I.axis==="x"?[null,U[1]]:[U[0],null];q=[(O[0]*4)+I.scrollInertia,(O[1]*4)+I.scrollInertia];var S=parseInt(I.contentTouchScroll)||0;x[0]=O[0]>S?x[0]:0;x[1]=O[1]>S?x[1]:0;if(K.overflowed[0]){B(x[0],q[0],Q,"y",s,false)}if(K.overflowed[1]){B(x[1],q[1],Q,"x",s,false)}});function p(P,N){var O=[N*1.5,N*2,N/1.5,N/2];if(P>90){return N>4?O[0]:O[3]}else{if(P>60){return N>3?O[3]:O[2]}else{if(P>30){return N>8?O[1]:N>6?O[0]:N>4?N:O[2]}else{return N>8?N:O[3]}}}}function B(P,R,S,O,N,Q){if(!P){return}i._scrollTo(y,P.toString(),{dur:R,scrollEasing:S,dir:O,overwrite:N,drag:Q})}},_mousewheel:function(){var w=j(this),v=w.data(d);if(v){var p=v.opt,s=d+"_"+v.idx,q=j("#mCSB_"+v.idx),x=[j("#mCSB_"+v.idx+"_dragger_vertical"),j("#mCSB_"+v.idx+"_dragger_horizontal")],t=j("#mCSB_"+v.idx+"_container").find("iframe"),r=q;if(t.length){t.each(function(){var y=this;if(u(y)){r=r.add(j(y).contents().find("body"))}})}r.bind("mousewheel."+s,function(C,G){i._stop(w);if(i._disableMousewheel(w,C.target)){return}var E=p.mouseWheel.deltaFactor!=="auto"?parseInt(p.mouseWheel.deltaFactor):(k&&C.deltaFactor<100)?100:C.deltaFactor||100;if(p.axis==="x"||p.mouseWheel.axis==="x"){var z="x",F=[Math.round(E*v.scrollRatio.x),parseInt(p.mouseWheel.scrollAmount)],B=p.mouseWheel.scrollAmount!=="auto"?F[1]:F[0]>=q.width()?q.width()*0.9:F[0],H=Math.abs(j("#mCSB_"+v.idx+"_container")[0].offsetLeft),D=x[1][0].offsetLeft,A=x[1].parent().width()-x[1].width(),y=C.deltaX||C.deltaY||G}else{var z="y",F=[Math.round(E*v.scrollRatio.y),parseInt(p.mouseWheel.scrollAmount)],B=p.mouseWheel.scrollAmount!=="auto"?F[1]:F[0]>=q.height()?q.height()*0.9:F[0],H=Math.abs(j("#mCSB_"+v.idx+"_container")[0].offsetTop),D=x[0][0].offsetTop,A=x[0].parent().height()-x[0].height(),y=C.deltaY||G}if((z==="y"&&!v.overflowed[0])||(z==="x"&&!v.overflowed[1])){return}if(p.mouseWheel.invert){y=-y}if(p.mouseWheel.normalizeDelta){y=y<0?-1:1}if((y>0&&D!==0)||(y<0&&D!==A)||p.mouseWheel.preventDefault){C.stopImmediatePropagation();C.preventDefault()}i._scrollTo(w,(H-(y*B)).toString(),{dir:z})})}function u(z){var y=null;try{var B=z.contentDocument||z.contentWindow.document;y=B.body.innerHTML}catch(A){}return(y!==null)}},_disableMousewheel:function(r,t){var p=t.nodeName.toLowerCase(),q=r.data(d).opt.mouseWheel.disableOver,s=["select","textarea"];return j.inArray(p,q)>-1&&!(j.inArray(p,s)>-1&&!j(t).is(":focus"))},_draggerRail:function(){var s=j(this),t=s.data(d),q=d+"_"+t.idx,r=j("#mCSB_"+t.idx+"_container"),u=r.parent(),p=j(".mCSB_"+t.idx+"_scrollbar .mCSB_draggerContainer");p.bind("touchstart."+q+" pointerdown."+q+" MSPointerDown."+q,function(v){n=true}).bind("touchend."+q+" pointerup."+q+" MSPointerUp."+q,function(v){n=false}).bind("click."+q,function(z){if(j(z.target).hasClass("mCSB_draggerContainer")||j(z.target).hasClass("mCSB_draggerRail")){i._stop(s);var w=j(this),y=w.find(".mCSB_dragger");if(w.parent(".mCSB_scrollTools_horizontal").length>0){if(!t.overflowed[1]){return}var v="x",x=z.pageX>y.offset().left?-1:1,A=Math.abs(r[0].offsetLeft)-(x*(u.width()*0.9))}else{if(!t.overflowed[0]){return}var v="y",x=z.pageY>y.offset().top?-1:1,A=Math.abs(r[0].offsetTop)-(x*(u.height()*0.9))}i._scrollTo(s,A.toString(),{dir:v,scrollEasing:"mcsEaseInOut"})}})},_focus:function(){var r=j(this),t=r.data(d),s=t.opt,p=d+"_"+t.idx,q=j("#mCSB_"+t.idx+"_container"),u=q.parent();q.bind("focusin."+p,function(x){var w=j(a.activeElement),y=q.find(".mCustomScrollBox").length,v=0;if(!w.is(s.advanced.autoScrollOnFocus)){return}i._stop(r);clearTimeout(r[0]._focusTimeout);r[0]._focusTimer=y?(v+17)*y:0;r[0]._focusTimeout=setTimeout(function(){var C=[w.offset().top-q.offset().top,w.offset().left-q.offset().left],B=[q[0].offsetTop,q[0].offsetLeft],z=[(B[0]+C[0]>=0&&B[0]+C[0]<u.height()-w.outerHeight(false)),(B[1]+C[1]>=0&&B[0]+C[1]<u.width()-w.outerWidth(false))],A=(s.axis==="yx"&&!z[0]&&!z[1])?"none":"all";if(s.axis!=="x"&&!z[0]){i._scrollTo(r,C[0].toString(),{dir:"y",scrollEasing:"mcsEaseInOut",overwrite:A,dur:v})}if(s.axis!=="y"&&!z[1]){i._scrollTo(r,C[1].toString(),{dir:"x",scrollEasing:"mcsEaseInOut",overwrite:A,dur:v})}},r[0]._focusTimer)})},_wrapperScroll:function(){var q=j(this),r=q.data(d),p=d+"_"+r.idx,s=j("#mCSB_"+r.idx+"_container").parent();s.bind("scroll."+p,function(t){s.scrollTop(0).scrollLeft(0)})},_buttons:function(){var u=j(this),w=u.data(d),v=w.opt,p=w.sequential,r=d+"_"+w.idx,t=j("#mCSB_"+w.idx+"_container"),s=".mCSB_"+w.idx+"_scrollbar",q=j(s+">a");q.bind("mousedown."+r+" touchstart."+r+" pointerdown."+r+" MSPointerDown."+r+" mouseup."+r+" touchend."+r+" pointerup."+r+" MSPointerUp."+r+" mouseout."+r+" pointerout."+r+" MSPointerOut."+r+" click."+r,function(z){z.preventDefault();if(!i._mouseBtnLeft(z)){return}var y=j(this).attr("class");p.type=v.scrollButtons.scrollType;switch(z.type){case"mousedown":case"touchstart":case"pointerdown":case"MSPointerDown":if(p.type==="stepped"){return}n=true;w.tweenRunning=false;x("on",y);break;case"mouseup":case"touchend":case"pointerup":case"MSPointerUp":case"mouseout":case"pointerout":case"MSPointerOut":if(p.type==="stepped"){return}n=false;if(p.dir){x("off",y)}break;case"click":if(p.type!=="stepped"||w.tweenRunning){return}x("on",y);break}function x(A,B){p.scrollAmount=v.snapAmount||v.scrollButtons.scrollAmount;i._sequentialScroll.call(this,u,A,B)}})},_keyboard:function(){var u=j(this),t=u.data(d),q=t.opt,x=t.sequential,s=d+"_"+t.idx,r=j("#mCSB_"+t.idx),w=j("#mCSB_"+t.idx+"_container"),p=w.parent(),v="input,textarea,select,datalist,keygen,[contenteditable='true']";r.attr("tabindex","0").bind("blur."+s+" keydown."+s+" keyup."+s,function(D){switch(D.type){case"blur":if(t.tweenRunning&&x.dir){y("off",null)}break;case"keydown":case"keyup":var A=D.keyCode?D.keyCode:D.which,B="on";if((q.axis!=="x"&&(A===38||A===40))||(q.axis!=="y"&&(A===37||A===39))){if(((A===38||A===40)&&!t.overflowed[0])||((A===37||A===39)&&!t.overflowed[1])){return}if(D.type==="keyup"){B="off"}if(!j(a.activeElement).is(v)){D.preventDefault();D.stopImmediatePropagation();y(B,A)}}else{if(A===33||A===34){if(t.overflowed[0]||t.overflowed[1]){D.preventDefault();D.stopImmediatePropagation()}if(D.type==="keyup"){i._stop(u);var C=A===34?-1:1;if(q.axis==="x"||(q.axis==="yx"&&t.overflowed[1]&&!t.overflowed[0])){var z="x",E=Math.abs(w[0].offsetLeft)-(C*(p.width()*0.9))}else{var z="y",E=Math.abs(w[0].offsetTop)-(C*(p.height()*0.9))}i._scrollTo(u,E.toString(),{dir:z,scrollEasing:"mcsEaseInOut"})}}else{if(A===35||A===36){if(!j(a.activeElement).is(v)){if(t.overflowed[0]||t.overflowed[1]){D.preventDefault();D.stopImmediatePropagation()}if(D.type==="keyup"){if(q.axis==="x"||(q.axis==="yx"&&t.overflowed[1]&&!t.overflowed[0])){var z="x",E=A===35?Math.abs(p.width()-w.outerWidth(false)):0}else{var z="y",E=A===35?Math.abs(p.height()-w.outerHeight(false)):0}i._scrollTo(u,E.toString(),{dir:z,scrollEasing:"mcsEaseInOut"})}}}}}break}function y(F,G){x.type=q.keyboard.scrollType;x.scrollAmount=q.snapAmount||q.keyboard.scrollAmount;if(x.type==="stepped"&&t.tweenRunning){return}i._sequentialScroll.call(this,u,F,G)}})},_sequentialScroll:function(r,u,s){var w=r.data(d),q=w.opt,y=w.sequential,x=j("#mCSB_"+w.idx+"_container"),p=y.type==="stepped"?true:false;switch(u){case"on":y.dir=[(s==="mCSB_buttonRight"||s==="mCSB_buttonLeft"||s===39||s===37?"x":"y"),(s==="mCSB_buttonUp"||s==="mCSB_buttonLeft"||s===38||s===37?-1:1)];i._stop(r);if(i._isNumeric(s)&&y.type==="stepped"){return}t(p);break;case"off":v();if(p||(w.tweenRunning&&y.dir)){t(true)}break}function t(z){var F=y.type!=="stepped",J=!z?1000/60:F?q.scrollInertia/1.5:q.scrollInertia,B=!z?2.5:F?7.5:40,I=[Math.abs(x[0].offsetTop),Math.abs(x[0].offsetLeft)],E=[w.scrollRatio.y>10?10:w.scrollRatio.y,w.scrollRatio.x>10?10:w.scrollRatio.x],C=y.dir[0]==="x"?I[1]+(y.dir[1]*(E[1]*B)):I[0]+(y.dir[1]*(E[0]*B)),H=y.dir[0]==="x"?I[1]+(y.dir[1]*parseInt(y.scrollAmount)):I[0]+(y.dir[1]*parseInt(y.scrollAmount)),G=y.scrollAmount!=="auto"?H:C,D=!z?"mcsLinear":F?"mcsLinearOut":"mcsEaseInOut",A=!z?false:true;if(z&&J<17){G=y.dir[0]==="x"?I[1]:I[0]}i._scrollTo(r,G.toString(),{dir:y.dir[0],scrollEasing:D,dur:J,onComplete:A});if(z){y.dir=false;return}clearTimeout(y.step);y.step=setTimeout(function(){t()},J)}function v(){clearTimeout(y.step);i._stop(r)}},_arr:function(r){var q=j(this).data(d).opt,p=[];if(typeof r==="function"){r=r()}if(!(r instanceof Array)){p[0]=r.y?r.y:r.x||q.axis==="x"?null:r;p[1]=r.x?r.x:r.y||q.axis==="y"?null:r}else{p=r.length>1?[r[0],r[1]]:q.axis==="x"?[null,r[0]]:[r[0],null]}if(typeof p[0]==="function"){p[0]=p[0]()}if(typeof p[1]==="function"){p[1]=p[1]()}return p},_to:function(v,w){if(v==null||typeof v=="undefined"){return}var C=j(this),B=C.data(d),u=B.opt,D=j("#mCSB_"+B.idx+"_container"),r=D.parent(),F=typeof v;if(!w){w=u.axis==="x"?"x":"y"}var q=w==="x"?D.outerWidth(false):D.outerHeight(false),x=w==="x"?D.offset().left:D.offset().top,E=w==="x"?D[0].offsetLeft:D[0].offsetTop,z=w==="x"?"left":"top";switch(F){case"function":return v();break;case"object":if(v.nodeType){var A=w==="x"?j(v).offset().left:j(v).offset().top}else{if(v.jquery){if(!v.length){return}var A=w==="x"?v.offset().left:v.offset().top}}return A-x;break;case"string":case"number":if(i._isNumeric.call(null,v)){return Math.abs(v)}else{if(v.indexOf("%")!==-1){return Math.abs(q*parseInt(v)/100)}else{if(v.indexOf("-=")!==-1){return Math.abs(E-parseInt(v.split("-=")[1]))}else{if(v.indexOf("+=")!==-1){var s=(E+parseInt(v.split("+=")[1]));return s>=0?0:Math.abs(s)}else{if(v.indexOf("px")!==-1&&i._isNumeric.call(null,v.split("px")[0])){return Math.abs(v.split("px")[0])}else{if(v==="top"||v==="left"){return 0}else{if(v==="bottom"){return Math.abs(r.height()-D.outerHeight(false))}else{if(v==="right"){return Math.abs(r.width()-D.outerWidth(false))}else{if(v==="first"||v==="last"){var y=D.find(":"+v),A=w==="x"?j(y).offset().left:j(y).offset().top;return A-x}else{if(j(v).length){var A=w==="x"?j(v).offset().left:j(v).offset().top;return A-x}else{D.css(z,v);e.update.call(null,C[0]);return}}}}}}}}}}break}},_autoUpdate:function(q){var t=j(this),F=t.data(d),z=F.opt,v=j("#mCSB_"+F.idx+"_container");if(q){clearTimeout(v[0].autoUpdate);i._delete.call(null,v[0].autoUpdate);return}var s=v.parent(),p=[j("#mCSB_"+F.idx+"_scrollbar_vertical"),j("#mCSB_"+F.idx+"_scrollbar_horizontal")],D=function(){return[p[0].is(":visible")?p[0].outerHeight(true):0,p[1].is(":visible")?p[1].outerWidth(true):0]},E=y(),x,u=[v.outerHeight(false),v.outerWidth(false),s.height(),s.width(),D()[0],D()[1]],H,B=G(),w;C();function C(){clearTimeout(v[0].autoUpdate);v[0].autoUpdate=setTimeout(function(){if(z.advanced.updateOnSelectorChange){x=y();if(x!==E){r();E=x;return}}if(z.advanced.updateOnContentResize){H=[v.outerHeight(false),v.outerWidth(false),s.height(),s.width(),D()[0],D()[1]];if(H[0]!==u[0]||H[1]!==u[1]||H[2]!==u[2]||H[3]!==u[3]||H[4]!==u[4]||H[5]!==u[5]){r();u=H}}if(z.advanced.updateOnImageLoad){w=G();if(w!==B){v.find("img").each(function(){A(this.src)});B=w}}if(z.advanced.updateOnSelectorChange||z.advanced.updateOnContentResize||z.advanced.updateOnImageLoad){C()}},60)}function G(){var I=0;if(z.advanced.updateOnImageLoad){I=v.find("img").length}return I}function A(L){var I=new Image();function K(M,N){return function(){return N.apply(M,arguments)}}function J(){this.onload=null;r()}I.onload=K(I,J);I.src=L}function y(){if(z.advanced.updateOnSelectorChange===true){z.advanced.updateOnSelectorChange="*"}var I=0,J=v.find(z.advanced.updateOnSelectorChange);if(z.advanced.updateOnSelectorChange&&J.length>0){J.each(function(){I+=j(this).height()+j(this).width()})}return I}function r(){clearTimeout(v[0].autoUpdate);e.update.call(null,t[0])}},_snapAmount:function(r,p,q){return(Math.round(r/p)*p-q)},_stop:function(p){var r=p.data(d),q=j("#mCSB_"+r.idx+"_container,#mCSB_"+r.idx+"_container_wrapper,#mCSB_"+r.idx+"_dragger_vertical,#mCSB_"+r.idx+"_dragger_horizontal");q.each(function(){i._stopTween.call(this)})},_scrollTo:function(q,s,u){var I=q.data(d),E=I.opt,D={trigger:"internal",dir:"y",scrollEasing:"mcsEaseOut",drag:false,dur:E.scrollInertia,overwrite:"all",callbacks:true,onStart:true,onUpdate:true,onComplete:true},u=j.extend(D,u),G=[u.dur,(u.drag?0:u.dur)],v=j("#mCSB_"+I.idx),B=j("#mCSB_"+I.idx+"_container"),K=E.callbacks.onTotalScrollOffset?i._arr.call(q,E.callbacks.onTotalScrollOffset):[0,0],p=E.callbacks.onTotalScrollBackOffset?i._arr.call(q,E.callbacks.onTotalScrollBackOffset):[0,0];I.trigger=u.trigger;if(s==="_resetY"&&!I.contentReset.y){if(t("onOverflowYNone")){E.callbacks.onOverflowYNone.call(q[0])}I.contentReset.y=1}if(s==="_resetX"&&!I.contentReset.x){if(t("onOverflowXNone")){E.callbacks.onOverflowXNone.call(q[0])}I.contentReset.x=1}if(s==="_resetY"||s==="_resetX"){return}if((I.contentReset.y||!q[0].mcs)&&I.overflowed[0]){if(t("onOverflowY")){E.callbacks.onOverflowY.call(q[0])}I.contentReset.x=null}if((I.contentReset.x||!q[0].mcs)&&I.overflowed[1]){if(t("onOverflowX")){E.callbacks.onOverflowX.call(q[0])}I.contentReset.x=null}if(E.snapAmount){s=i._snapAmount(s,E.snapAmount,E.snapOffset)}switch(u.dir){case"x":var x=j("#mCSB_"+I.idx+"_dragger_horizontal"),z="left",C=B[0].offsetLeft,H=[v.width()-B.outerWidth(false),x.parent().width()-x.width()],r=[s,s===0?0:(s/I.scrollRatio.x)],L=K[1],J=p[1],A=L>0?L/I.scrollRatio.x:0,w=J>0?J/I.scrollRatio.x:0;break;case"y":var x=j("#mCSB_"+I.idx+"_dragger_vertical"),z="top",C=B[0].offsetTop,H=[v.height()-B.outerHeight(false),x.parent().height()-x.height()],r=[s,s===0?0:(s/I.scrollRatio.y)],L=K[0],J=p[0],A=L>0?L/I.scrollRatio.y:0,w=J>0?J/I.scrollRatio.y:0;break}if(r[1]<0||(r[0]===0&&r[1]===0)){r=[0,0]}else{if(r[1]>=H[1]){r=[H[0],H[1]]}else{r[0]=-r[0]}}if(!q[0].mcs){F()}clearTimeout(B[0].onCompleteTimeout);if(!I.tweenRunning&&((C===0&&r[0]>=0)||(C===H[0]&&r[0]<=H[0]))){return}i._tweenTo.call(null,x[0],z,Math.round(r[1]),G[1],u.scrollEasing);i._tweenTo.call(null,B[0],z,Math.round(r[0]),G[0],u.scrollEasing,u.overwrite,{onStart:function(){if(u.callbacks&&u.onStart&&!I.tweenRunning){if(t("onScrollStart")){F();E.callbacks.onScrollStart.call(q[0])}I.tweenRunning=true;i._onDragClasses(x);I.cbOffsets=y()}},onUpdate:function(){if(u.callbacks&&u.onUpdate){if(t("whileScrolling")){F();E.callbacks.whileScrolling.call(q[0])}}},onComplete:function(){if(u.callbacks&&u.onComplete){if(E.axis==="yx"){clearTimeout(B[0].onCompleteTimeout)}var M=B[0].idleTimer||0;B[0].onCompleteTimeout=setTimeout(function(){if(t("onScroll")){F();E.callbacks.onScroll.call(q[0])}if(t("onTotalScroll")&&r[1]>=H[1]-A&&I.cbOffsets[0]){F();E.callbacks.onTotalScroll.call(q[0])}if(t("onTotalScrollBack")&&r[1]<=w&&I.cbOffsets[1]){F();E.callbacks.onTotalScrollBack.call(q[0])}I.tweenRunning=false;B[0].idleTimer=0;i._onDragClasses(x,"hide")},M)}}});function t(M){return I&&E.callbacks[M]&&typeof E.callbacks[M]==="function"}function y(){return[E.callbacks.alwaysTriggerOffsets||C>=H[0]+L,E.callbacks.alwaysTriggerOffsets||C<=-J]}function F(){var O=[B[0].offsetTop,B[0].offsetLeft],P=[x[0].offsetTop,x[0].offsetLeft],M=[B.outerHeight(false),B.outerWidth(false)],N=[v.height(),v.width()];q[0].mcs={content:B,top:O[0],left:O[1],draggerTop:P[0],draggerLeft:P[1],topPct:Math.round((100*Math.abs(O[0]))/(Math.abs(M[0])-N[0])),leftPct:Math.round((100*Math.abs(O[1]))/(Math.abs(M[1])-N[1])),direction:u.dir}}},_tweenTo:function(r,u,s,q,B,t,K){var K=K||{},H=K.onStart||function(){},C=K.onUpdate||function(){},I=K.onComplete||function(){},z=i._getTime(),x,v=0,E=r.offsetTop,F=r.style,A;if(u==="left"){E=r.offsetLeft}var y=s-E;r._mcsstop=0;if(t!=="none"){D()}p();function J(){if(r._mcsstop){return}if(!v){H.call()}v=i._getTime()-z;G();if(v>=r._mcstime){r._mcstime=(v>r._mcstime)?v+x-(v-r._mcstime):v+x-1;if(r._mcstime<v+1){r._mcstime=v+1}}if(r._mcstime<q){r._mcsid=A(J)}else{I.call()}}function G(){if(q>0){r._mcscurrVal=w(r._mcstime,E,y,q,B);F[u]=Math.round(r._mcscurrVal)+"px"}else{F[u]=s+"px"}C.call()}function p(){x=1000/60;r._mcstime=v+x;A=(!b.requestAnimationFrame)?function(L){G();return setTimeout(L,0.01)}:b.requestAnimationFrame;r._mcsid=A(J)}function D(){if(r._mcsid==null){return}if(!b.requestAnimationFrame){clearTimeout(r._mcsid)}else{b.cancelAnimationFrame(r._mcsid)}r._mcsid=null}function w(N,M,R,Q,O){switch(O){case"linear":case"mcsLinear":return R*N/Q+M;break;case"mcsLinearOut":N/=Q;N--;return R*Math.sqrt(1-N*N)+M;break;case"easeInOutSmooth":N/=Q/2;if(N<1){return R/2*N*N+M}N--;return -R/2*(N*(N-2)-1)+M;break;case"easeInOutStrong":N/=Q/2;if(N<1){return R/2*Math.pow(2,10*(N-1))+M}N--;return R/2*(-Math.pow(2,-10*N)+2)+M;break;case"easeInOut":case"mcsEaseInOut":N/=Q/2;if(N<1){return R/2*N*N*N+M}N-=2;return R/2*(N*N*N+2)+M;break;case"easeOutSmooth":N/=Q;N--;return -R*(N*N*N*N-1)+M;break;case"easeOutStrong":return R*(-Math.pow(2,-10*N/Q)+1)+M;break;case"easeOut":case"mcsEaseOut":default:var P=(N/=Q)*N,L=P*N;return M+R*(0.499999999999997*L*P+-2.5*P*P+5.5*L+-6.5*P+4*N)}}},_getTime:function(){if(b.performance&&b.performance.now){return b.performance.now()}else{if(b.performance&&b.performance.webkitNow){return b.performance.webkitNow()}else{if(Date.now){return Date.now()}else{return new Date().getTime()}}}},_stopTween:function(){var p=this;if(p._mcsid==null){return}if(!b.requestAnimationFrame){clearTimeout(p._mcsid)}else{b.cancelAnimationFrame(p._mcsid)}p._mcsid=null;p._mcsstop=1},_delete:function(r){try{delete r}catch(q){r=null}},_mouseBtnLeft:function(p){return !(p.which&&p.which!==1)},_pointerTouch:function(q){var p=q.originalEvent.pointerType;return !(p&&p!=="touch"&&p!==2)},_isNumeric:function(p){return !isNaN(parseFloat(p))&&isFinite(p)}};j.fn[g]=function(p){if(e[p]){return e[p].apply(this,Array.prototype.slice.call(arguments,1))}else{if(typeof p==="object"||!p){return e.init.apply(this,arguments)}else{j.error("Method "+p+" does not exist")}}};j[g]=function(p){if(e[p]){return e[p].apply(this,Array.prototype.slice.call(arguments,1))}else{if(typeof p==="object"||!p){return e.init.apply(this,arguments)}else{j.error("Method "+p+" does not exist")}}};j[g].defaults=h;b[g]=true;j(b).load(function(){j(m)[g]()})}))}(window,document));
/*global $:false*/
/*jshint strict:true, camelcase:true, curly:true, eqeqeq:true, immed:true, indent:2, latedef:true, newcap:true, noarg:true, noempty:true, nonew:true, quotmark:single, undef:true, unused:true, trailing:true */
(function (window, document, undefined) {
  'use strict';
  window.Bein.settings = {
  
    cookie   : perform.getCookie('beinsports'),
    language : '',
    popover  : true,
    timezone : '',
    
    /**
     * Settings initialization
     */
    init : function () {

      // get settings from cookie
      this.language = Bein.module.helpers.url.getParam('lang', this.cookie);
      this.popover = (Bein.module.helpers.url.getParam('po', this.cookie) === '0') ? false : true;
      this.timezone = Bein.module.helpers.url.getParam('tz', this.cookie);

    },
    
    /**
     * Gets beinsports cookie.
     *
     * Sample usage:
     *
     *   window.Bein.settings.getCookie();
     *
     * @return (String)
     */
    getCookie : function () {
      return perform.getCookie('beinsports');
    },
    
    /**
     * Sets beinsports cookie.
     *
     * Sample usage:
     *
     *   window.Bein.settings.setCookie('lang=en');
     *
     * @param  (String) value    cookie value
     * @return (void)
     */
    setCookie : function (cookie) {
      perform.setCookie('beinsports', cookie, {
        domain: '.beinsports.net',
        expires: 30,
        path: '/'
      });
    },
    
    /**
     * Updates beinsports cookie.
     *
     * Sample usage:
     *
     *   window.Bein.settings.updateCookie('lang=ar');
     *
     * @param  (String) value    cookie value
     * @return (void)
     */
    updateCookie : function (cookie) {

      var update = this.cookie;
     
      if (update) {
      
        cookie = cookie.split("&");
  
        for (var i=0; i < cookie.length; i++) {
          var value = cookie[i].split('=');
          if (update.indexOf(value[0]) !== -1) {
            update = update.replace(new RegExp('(' + value[0] + '=).*?(&|$)'),'$1' + value[1] + '$2');
          } else {
            update += '&' + value[0] + '=' + value[1];
          }
        }
      } else {
        update = cookie;
      }

      this.setCookie(update);
      
    },
    
    /**
     * Removes beinsports cookie.
     *
     * Sample usage:
     *
     *   window.Bein.settings.removeCookie();
     *
     * @return (void)
     */
    removeCookie : function () {
      perform.setCookie('beinsports', '', {
        domain: '.beinsports.net',
        expires: -1
      });
    }
  
  };
  
})(this, this.document);/*global $:false, beIn:false*/
/*jshint strict:true, camelcase:true, curly:true, eqeqeq:true, immed:true, indent:2, latedef:true, newcap:true, noarg:true, noempty:true, nonew:true, quotmark:single, undef:true, unused:true, trailing:true */

(function (window, document) {
  'use strict';
  window.Bein.module.dynamic = {
    /**
     * Does GET on ajax feed. Asynchronous, runs callback function after completing.
     *
     * @param {string} urlParams - url params for required page
     * @param {function} callback - callback function for handling response
     *  - on success first param will be boolean "true" and second param response object
     *  - on failure first param will be boolean "false" and second param error text
     * @param {string} format - response format, "json" or "xml" (default)
     *
     */
    getData : function (urlParams, callback, format) {
      $('#ajax-loading').show();
      format = format || 'xml';
      $.ajax({
        url : urlParams,
        type : 'GET',
        dataType : format,
        success : function (res) {
          if($(res).find('result').attr('success') === 'true') {
            callback(true, res);
            window.Bein.track();
            Helpers.dateFormater.init('ar');
          } else {
            callback(false, 'no data');
          }
          $('#ajax-loading').hide();
        },
        error : function (res, text) {
          console.log('!! Ajax GET error: ' + text);
          callback(false, text);
          $('#ajax-loading').hide();
        }
      });
    },

    /**
     * Reloads content of competitions selectbox
     */
    reloadCompetitionSelect : function (data) {
      var url = "/ajax/competitions/sport/"+ data.sport +"/lang/en/section/"+ data.section +"/area/"+ data.area;
      this.getData(
        url,
        function (result, xml) {
          if(result === true) {
            $('#competitions_select').html($(xml).find('body').text());
          }
        }
      );
    },

    /**
     * Redraws standings table with given competition url
     * 
     * @param {string} url - url params for sport and competition, for example "basketball/fiba/standings"
     */
    drawStandings : function (url) {
      this.getData(
        '/ajax' + url,
        function (result, xml) {
          if(result === true) {
            $('#standings-header').html($(xml).find('header').text());
            $('#standings-body').html($(xml).find('body').text());
          } else {
            $('#standings-header').html("");
            $('#standings-body').html('A??? ?C ???I ??E?? ???C C????.');
          }
        }
      );
    },
      
    /**
     * Redraws tennis rankings table
     */
    drawRankings : function () {
      var baseUrl = $('#tour_select').val().split('/');
      var url = '/ajax';
      for(var i = 0; i < (baseUrl.length - 1); i++) {
        if(baseUrl[i] !== '') {
          url = url + '/' + baseUrl[i];
        }  
      }
      url = url + '/' + $('#tennis_type').val();
      url = url + '/' + baseUrl[baseUrl.length - 1];
      
      this.getData(
        url,
        function (result, xml) {
          if(result === true) {
            $('#rankings-body').html($(xml).find('body').text());
          } else {
            $('#rankings-body').html('A??? ?C ???I ??E?? ???C C????.');
          }
        }
      );
    },

    /**
     * Redraws golf rankings table with given ranking type url
     * 
     * @param {string} url - url params for sport and competition, for example "/tennis/atp/rankings/single"
     */
    drawRankingsGolf : function (url) {
      this.getData(
        '/ajax' + url,
        function (result, xml) {
          if(result === true) {
            $('#rankings-header').html($(xml).find('header').text());
            $('#rankings-body').html($(xml).find('body').text());
          } else {
            $('#rankings-header').html("");
            $('#rankings-body').html('A??? ?C ???I ??E?? ???C C????.');
          }
        }
      );
    },    

    /**
     *
     */
    drawFixtures : function (url) {
      this.drawFixturesResults(url, 'fixtures');
    },

    /**
     *
     */
    drawResults : function (url) {
      this.drawFixturesResults(url, 'results');
    },
  
    /**
     * Redraws fixtures or results with given competition url
     * 
     * @param {string} url - url params for sport and competition, for example "basketball/fiba/standings"
     */
    drawFixturesResults : function (url, type) {
      this.getData(
        '/ajax' + url,
        function (result, xml) {
          if(result === true) {
            $('.season-name').html($(xml).find('header').text());
            $('.fixtures-results').html($(xml).find('body').text());
          } else {
            console.log('URL: ' + url + ', xml: ' + xml);
            $('.fixtures-results').html('<li class="no-content">A??? ?C ???I ??E?? ???C C????..</li>');
          }
        }
      );
    }
  };

})(window, document);/*global $:false*/
/*jshint strict:true, camelcase:true, curly:true, eqeqeq:true, immed:true, indent:2, latedef:true, newcap:true, noarg:true, noempty:true, nonew:true, quotmark:single, undef:true, unused:true, trailing:true */
(function (window, document, undefined) {
  'use strict';
  window.Bein.module.fixtures = {
    /**
     * Initialization function that runs all the necessary functions
     */
    init : function () {
      Helpers.date.convertTimesToLocal();
    }
  
  };
  
  $(document).ready(function () {
    window.Bein.module.fixtures.init();
  });
  
})(this, this.document);function createSocialButtons($wrapper, text, currentIndex){
  
  var shareUrl = window.location.href + '#photo-' + currentIndex;
  if(window.location.hash.length > 1) {
  	var shareUrl = window.location.href.replace(/#photo-.+/, '#photo-' + currentIndex);
  }
  // Twitter "tweet" button
  var tweet = document.createElement('a');
  tweet.setAttribute('href','https://twitter.com/share');
  tweet.setAttribute('class','twitter-share-button');
  tweet.setAttribute('data-text', text);
  tweet.setAttribute('data-url',shareUrl);
  tweet.setAttribute('data-via','beinsport');
  
  // Facebook like button
  var fblike = document.createElement('div');
  fblike.setAttribute('class', 'fb-like fb_edge_widget_with_comment fb_iframe_widget');
  fblike.setAttribute('data-href', shareUrl);
  fblike.setAttribute('data-layout', 'button_count');
  fblike.setAttribute('data-show-faces', 'false');
  fblike.setAttribute('data-send', 'false');
  fblike.setAttribute('data-action', 'like');
  fblike.setAttribute('data-width', 172);
  fblike.setAttribute('data-height', 80);
  fblike.setAttribute('data-ref', 'gallery');
  
  // Create wrappers for share buttons
  var fbook = document.createElement('div');
  fbook.setAttribute('class', 'shareButton fbook');
  var twit = document.createElement('div');
  twit.setAttribute('class', 'shareButton twit');
  
  // Fill button wrappers
  fbook.appendChild(fblike);
  twit.appendChild(tweet);
  // Append buttons to DOM and load buttons via APIs
  $wrapper.append(fbook, twit);
  
  
  if ((typeof twttr != 'undefined') && (typeof twttr.widgets != 'undefined')) {
  		twttr.widgets.load($wrapper[0]);
  }
  if (typeof FB != 'undefined') {
  	FB.XFBML.parse($wrapper[0]);
  }
}      
$('document').ready(function () {
  //On phone devices or not on gallery page, skip loading of Galleria
  if ($('.phone').length === 0 && $('#bein-gallery').length !== 0) {
       
  	// Load the classic theme
    Galleria.loadTheme('/js/beinsportAR/js/plugins/themes/galleria.bein.js');
  
    var hash = window.location.hash.replace('#photo-', '');
  	hash === '' ? hash = 1 : '';
    var photosCount = 0;	
  
    Galleria.run('#bein-gallery', {
      show: hash-1, 
      showCounter: false,
      showInfo: false,
      fullscreenDoubleTap: false,
      dataConfig: function(img) {
    	return {
    		layer: $(img).parent().next('.layer').html()
  		}
  	  }
    });
    
    Galleria.ready(function(options) {
  	  photosCount = this.getDataLength();
      var touch = Galleria.TOUCH;
   	  
      
       if (touch) {
       var notMoved = true;
       
       $('.galleria-stage').bind('touchmove', function() {
           notMoved = false;
       });  
       $('.galleria-stage').bind('click', function(event) {      
          if (notMoved) {
            if($('.info-text').css('display') == 'none') {
              $('.info-text, .galleria-image-nav').show();
            }
            else {
              $('.info-text, .galleria-image-nav').hide();
            }
          }
          notMoved = true;
       });
     } else {
        $('.galleria-stage').hover(function() { 
            $('.info-text, .galleria-image-nav').show();
        }, function() {
            $('.info-text, .galleria-image-nav').hide();
        });
      }

    });
       
    

  Galleria.on('image', function(event) {
    // Trigger custom event on body for generating page view after image is loaded (after transition)
      $('body').trigger('pageView', [event]);
   
    // Load social buttons and update stuff and binds
      var currentIndex = event.index + 1;
      
      $('.counter').html(currentIndex + ' / ' + photosCount);
      
      $('.galleria-image-nav').show().bind('click', function(e) {
        e.stopPropagation();
      });
      $('.icon-wrapper').bind('click', function(e) {
      	e.stopPropagation();
    	$('#bein-gallery').data('galleria').toggleFullscreen();
      });
    //createSocialButtons($('.galleria-stage .share-buttons'), event.galleriaData.description, currentIndex);
  });  
  // Custom event for generating PAGE VIEWS
  $('body').bind("pageView", function(event, data) {
  	var currentIndex = data.index + 1;
    var hash = window.location.hash;
    var href = window.location.href;
       if (hash.length > 0) {
          window.location.href = href.replace(hash, '#photo-'+ currentIndex);
       }
       else {
         window.location.href = href + '#photo-' + currentIndex;
       }
    // Check if omniture and google analytics objects exist
    typeof s != 'undefined' ? s.t() : console.log('omniture object is undefined');
    typeof _gaq != 'undefined' ? _gaq.push(['_trackPageview']) : console.log('google analytics object is  undefined');
  });
  }//if class != phone, do scroll loading without Galleria plugin
  else {
    $('#bein-gallery a').on('click', function(e) {
      e.preventDefault();
    });
    function loadBigImage(element) {
      var src = ($(element).attr('src'));
      src = src.replace(/&h=[0-9]+&quality=[0-9]+/, '&h=420&quality=90');
      element.setAttribute('src', src);
      lastIndex++;
    }
    //default value for lastScroll and lastIndex
    var lastScroll = 200;
    var lastIndex = -1;
    $('#bein-gallery img:lt(3)').each(function() {
    	loadBigImage(this);
    });
  
    window.onscroll = function() {  
      // Do stuff only if users scrolls to area he hasnt been already
      if (lastScroll < window.pageYOffset) {   
        //Reassign lastScroll
        lastScroll = window.pageYOffset;
        var loadIndex = Math.floor(lastScroll/420)+3;
        $('#bein-gallery img:lt(' + loadIndex + '):gt(' + lastIndex + ')').each(function(index) {
          loadBigImage(this);
        });
      }
      
    };
    $('.galleria-stage .share-buttons').each(function(index) {
		createSocialButtons($(this), '', (index + 1));
	});
    
  }
});/*global $:false, Helpers:false, perfCsl:false*/
/*jshint strict:true, camelcase:true, curly:true, eqeqeq:true, immed:true, indent:2, latedef:true, newcap:true, noarg:true, noempty:true, nonew:true, quotmark:single, undef:true, unused:true, trailing:true */
(function (window, document, undefined) {
  'use strict';
  var Helpers = window.Helpers = window.Bein.module.helpers = {
    date : {
      /**
       * Converts time to local in HH:mm format.
       */
      convertTimesToLocal : function () {
        $('[data-plugin*="localize-time"]').each(function () {
          var date = new Date($(this).attr('datetime').replace(/(\d)T(\d)/, '$1 $2') + ' UTC');
          console.log(date);
          $(this).text(Helpers.time.hhmm(date));
        });
      },
      
      /**
       * Replaces hyphens with slashes in date string
       *
       * Reasoning behind using slashes "/" rather than hyphens "-" is that Safari
       * won't parse date with hyphens,
       * e.g. new Date('22-01-2013') won't work while new Date('22/01/2013') will
       *
       * Sample usage:
       *
       *   window.Bein.module.helpers.date.fixDateString( '22-01-2013' );
       *   // => '22/01/2013'
       *
       * @param  {String}  dateString  Date string, e.g. '2013-01-22 08:45:00'
       * @return {String}              Fixed date string, .e.g. '2013/01/22 08:45:00'
       */
      fixDateString : function (dateString) {
        return dateString.replace(/-/g, '/').replace(/(\d)T(\d)/, '$1 $2'); // Do not replace T in GMT
      },

      /**
       * Splits date object to respective year, month, day...
       *
       * @param {Date} date to split, default current datetime
       * @return {Object} object of numbers
       */
      splitDate : function (date) {
        date = date || new Date();
        var units = {
          year : date.getFullYear(),
          month : date.getMonth() + 1,
          day : date.getDate(),
          hour : date.getHours(),
          minute : date.getMinutes(),
          second : date.getSeconds(),
          tzOffset : date.getTimezoneOffset() / -60,
          ts : {
            date : 0,
            dateUnix : 0,
            dateTime : date.getTime(),
            dateTimeUnix : Math.ceil(date.getTime() / 1000)
          }
        };
        
        date = new Date(units.year, units.month - 1, units.day);
        units.ts.date = date.getTime();
        units.ts.dateUnix = Math.ceil(units.ts.date / 1000);
      
        return units;
      },

      /**
       * Checks if checkDate is within [startDate..endDate] interval.
       *
       * @param {Mixed} startDate as {Date} object or {Number} timestamp
       * @param {Mixed} endDate as {Date} object or {Number} timestamp
       * @param {Mixed} checkDate - optional,  as {Date} object or {Number} timestamp, default current browser datetime
       * @return {Boolean} - true if checkDate is within interval, otherwise false
       */
      isInInterval : function (startDate, endDate, checkDate) {
        checkDate = checkDate || new Date();
        var start = (typeof startDate === 'number') ? startDate : startDate.getTime();
        var end = (typeof endDate === 'number') ? endDate : endDate.getTime();
        var check = (typeof checkDate === 'number') ? checkDate : checkDate.getTime();

        if ((check >= start) && (check <= end)) {
          return true;
        } else {
          return false;
        }
      }

    },
    
    numbers : {
      /**
       * Prefixes numbers between 0 and 9 with "0". Returns string
       *
       * Sample usage:
       *
       *   window.Bein.module.helpers.numbers.prefixWithZero( -1 );
       *   // => '-1'
       *
       *   window.Bein.module.helpers.numbers.prefixWithZero( 0 );
       *   // => '00'
       *
       *   window.Bein.module.helpers.numbers.prefixWithZero( 9 );
       *   // => '09'
       *
       *   window.Bein.module.helpers.numbers.prefixWithZero( 10 );
       *   // => '10'
       *
       * @param  {Number}  number  Number to prefix with '0'
       * @return {String}          Prefixed number
       */
      prefixWithZero : function (number) {
        var prefixedNumber;
  
        prefixedNumber = (number < 10 && number >= 0) ? '0' + number : number;
  
        return String(prefixedNumber);
      }
    },
    
    time : {
      /**
       * Returns time in HH:mm format
       *
       * Sample usage:
       *
       *   window.Bein.module.helpers.time.hhmm( new Date );
       *   // => '16:01'
       *
       *   window.Bein.module.helpers.time.hhmm();
       *   // => '16:01'
       *
       * @param  {Number}  timestamp  (optional) Timestamp you want to transform to a readable time, if omitted, current time would be printed
       * @return {String}                        Formatted time
       */
      hhmm : function (timestamp) {
        var date;
  
        date = timestamp ? new Date(timestamp) : new Date();
  
        return [
          window.Bein.module.helpers.numbers.prefixWithZero(date.getHours()),
          window.Bein.module.helpers.numbers.prefixWithZero(date.getMinutes())
        ].join(':');
  
      }
    },
    
    /**
     * Generic date formater for BeIN Sports
     */
    dateFormater : {

      /**
       * Language specific date formating
       * @param {string} dt - original date
       * @param {string} lang - formating language
       * @param {string} format - one of "date", "time", "datetime" (default)
       * @return {string}
       */
      format : function (dt, lang, format) {
      
        if (typeof format === 'undefined') {
          format = "datetime";
        }
        
        var date = '';
        var formats = {
          date : {
            ar : 'DD MMM YYYY',
            en : 'MMM DD YYYY',
            fr : 'DD MMM YYYY'
          },
          datetime : {
            ar : 'DD MMM YYYY HH:mm',
            en : 'MMM DD YYYY HH:mm',
            fr : 'DD MMM YYYY HH:mm'
          },
          time : {
            ar : 'HH:mm',
            en : 'HH:mm',
            fr : 'HH:mm'
          }
        }
        
        try {
          if (window.Bein.settings.timezone !== '') {
            date = moment.tz(dt*1000, window.Bein.settings.timezone).format(formats[format][lang]);
          } else {
            date = moment.unix(dt).format(formats[format][lang]);
          }
        } catch(e) {
          console.log(e);
        }
        
        return date;
      },
    
      /**
       * Initialise the formater
       * @param {string} lang
       * @param {object} collection
       * @return void
       */
      init : function (lang, collection) {
        var format;
        if (typeof lang === 'undefined') {
          lang = 'en';
        }
        if (typeof collection === 'undefined') {
          collection = $('time').not('time.nomodify');
        }

        for (var i = 0; i < collection.length; i++) {
          if (collection[i].className.indexOf('notime') >= 0) {
            format = 'date';
          } else if (collection[i].className.indexOf('nodate') >= 0) {
            format = 'time';
          } else {
            format = 'datetime';
          }
          collection[i].innerHTML = this.format($(collection[i]).data('timestamp'), lang, format);
        }
      }

    },
    
    url : {
    
      /**
       *
       * Returns GET or hash param's value
       *
       * Sample usage:
       *
       *   'http://www.livesport.tv/page/locale/en-gb?getParam=present#hashParam=present';
       *   LS.helpers.url._getParam('getParam', '?');   // => 'present'
       *   LS.helpers.url._getParam('hashParam', '#');  // => 'present'
       *
       * @param  {String}  key   GET or Hash parameter's name
       * @param  {String}  type  '?' (for GET) or '#' (for Hash)
       * @return {String}
       *
       */
      getParam : function(key, url) {
        key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
        var regex = new RegExp(key+"=([^&#]*)");
        var qs = regex.exec(url);
        if(qs === null) {
          return '';
        } else {
          return qs[1];
        }
      }
    
    }

  };
})(this, this.document);

$('document').ready(function () {
  'use strict';
  Helpers.dateFormater.init('ar');

  if (typeof document.querySelectorAll('#embedArea iframe')[0] !== 'undefined' && typeof perfCsl !== 'undefined') {
     perfCsl.onload = function () {
      if ('ar' === 'fr') {
        var tabs = this.contentDocument.getElementById('tabBar').children;
        var translate = [
          'Live Now',
          'Schedule',
          'Catch Up'
        ];
        var buttons = this.contentDocument.querySelectorAll('.tab .btn');

        for (var i = 0; i < tabs.length; i++) {
          tabs[i].innerHTML = translate[i];
          buttons[i].innerHTML = 'All Channels';
        }
      }
    };
  }
  // REWRITE THIS BULLSHIT TO OBJECT
  //         vvvvvvvvvvv
  //             vvv
  // Load sidebar related articles
  var $related = $('#rl-info');
  var wrappers = document.querySelectorAll('.related-articles');
    
  if ($related.length === 1 && !!wrappers.length ) {
    var rlData = $related.data();
    
    if (!!rlData.uuidtype) {
      $.get('/ajax/related/uuidType/' +rlData.uuidtype + '/contentIds/' + rlData.contentids + '/' + rlData.urlslug, function(data) {
        var $rendered = $('.rendered-related');
        // Create node and work with it before adding to actual DOM.
        var tmp = document.createElement('div');
        tmp.innerHTML = data;
        var tmpArticles = tmp.querySelectorAll('article');
        var len = tmpArticles.length;
        
        if ($rendered.length > 0) {          
          var ids = "";
          $rendered.each(function() {
            ids += "," + this.getAttribute('data-ids');
          });
          
         // Remove elmenents already rendered on site 
         for (var i=0; i < len; i++) {
           var elem = tmpArticles[i];
           if (ids.indexOf(elem.getAttribute('data-uuid')) > -1) {
             // After element removal, reduce the lenght and iterater by 1
             tmp.querySelector('.related-' + elem.getAttribute('data-type')).removeChild(elem);
           }
         }
       }
       // Iterate over remaining elements and remove to pass the specified count
       var slugInfo = rlData.urlslug.split('/');
       var slugLen = slugInfo.length;
       // sluginfo (e.g. news/5/videos/5) ... iterate every second ;)
             
       for (var i = 0; i < slugLen; i+=2) {
         var remainingSet = tmp.querySelectorAll('.related-' + slugInfo[i] + ' article:nth-child(n+' + (parseInt(slugInfo[i+1])+1) + ')');
         var remainingLen = remainingSet.length;
         if (remainingLen > 0) {
           for (var k = 0; k < remainingLen; k++) {
             tmp.querySelector('.related-' + slugInfo[i]).removeChild(remainingSet[k]);
           }
         }
         
         var relatedSelector =  document.querySelector('#related-'+slugInfo[i]+' div'); 
         var relatedResult = tmp.querySelector('.related-' + slugInfo[i]);
         var relArticles = relatedResult.getElementsByTagName('article');
         var finalNumOfArticles = (relArticles !== null) ? relArticles.length : 0;
         
         if (relatedSelector != null && relatedResult != null && finalNumOfArticles > 0) {
          	relatedSelector.appendChild(relatedResult); 
            relatedSelector.parentNode.style.display = 'block';
         }
       }
       
       /* update "All news" , "All galleries" , ... links  */
       
       if (rlData.sport != "" ) {
	     if (rlData.seo != "" ) {
            $('.related-articles footer a').each(function() {
    		  $(this).attr('href', '/' + rlData.sport + '/' + rlData.seo + $(this).attr('href').replace('photo-gallery', 'galleries'));
			});
       	 }  else {
            $('.related-articles footer a').each(function() {
  			  $(this).attr('href', '/' + rlData.sport + $(this).attr('href').replace('photo-gallery', 'galleries')); 
			});
         }           
       }
       Helpers.dateFormater.init('ar');
     });
    } 
  }
  
});/*global $:false*/
/*jshint strict:true, camelcase:true, curly:true, eqeqeq:true, immed:true, indent:2, latedef:true, newcap:true, noarg:true, noempty:true, nonew:true, quotmark:single, undef:true, unused:true, trailing:true */

  window.tabsSwitchedOnLoad = false;
  window.Bein.module.optaRightrail = {
    
    linkButtonTrans: {
      'results' : {
          'en' : 'Match Stats',
          'fr' : 'Stats Match',
          'ar' : '?EC?? C??EC?CE'
          },
      'fixtures' : {
          'en' : 'Match Preview',
          'fr' : 'Pré-match',
          'ar' : 'C??EC??CE C??CI?E'
          }
    },
    noLiveGameNotice: {
      'en' : 'Currently, no live matches',
      'fr' : 'Actuellement, pas de match en direct',
      'ar' : '?C E??I ?EC??CE ?ECO?E ?C??C?'
    },
    /**
     * Initialization function that runs all the necessary functions
     */
    init : function () {
      if (window.location.protocol === 'http:') {
        var script = document.createElement('script');
        var timezoneCookie = perform.getChip('beinsports','tz');
        var timezone = (timezoneCookie) ? -(moment().tz(timezoneCookie).zone()/60) : -(new Date().getTimezoneOffset()/60);
         window._optaParams = {
          custID: '97cfaeb0a4b71cf1a9238cde7c2d17db',
          language: 'ar',
          timezone: timezone - ("+0000" === "+0100" ? 1 : 0),
          callbacks: []
        };
        script.src = "http://widget.cloud.opta.net/2.0/js/widgets.opta.js";
        document.getElementsByTagName('head')[0].appendChild(script);
        
        var changeMatchLinks = function() {
        
          var league = $('.competition-option:selected').data('name');
          
          $("#opta-widget-idx-fixtures tr.match-linked").each(function() { 
          		var replaceStr = '/football/' + league + '/match-center';
                var linkWording = window.Bein.module.optaRightrail.linkButtonTrans['fixtures'][Bein.lang];

            	try {
                  var linkElement = this.nextSibling.getElementsByTagName('a')[0];
                  
                  if (linkElement)  {
                     
                          linkElement.href = linkElement.href.replace('/matchlink?', replaceStr).replace(/(season\=)|(\&competition\=)|(\&match\=)/g, '/').replace('?', '');
                          
                          if (this.querySelector('.link-button') === null) {
                              var linkButton = document.createElement("a");
                              linkButton.href = linkElement.href;
                              linkButton.textContent = linkWording;
                              linkButton.className = 'link-button';
                              this.lastChild.appendChild(linkButton);
                              
                              /* also make match score clickable*/
                              var scoreElements = this.getElementsByClassName('score');
                              if (!!scoreElements) {
                                for(var i=0; i<scoreElements.length; i++) {
                                    var scoreLink = document.createElement("a");
                                    scoreLink.href = linkElement.href;
                                    scoreLink.setAttribute('title', linkWording);
                                    scoreLink.textContent = $(scoreElements[i]).text();
                                    scoreElements[i].innerHTML = "";
                                    scoreElements[i].appendChild(scoreLink);
                                }
                              }
              			  }
                  }
                }catch(e){}
            });
            
         $("#opta-widget-idx-results tr.match-linked, #opta-widget-idx-livescore tr.match-linked").each(function() { 
          	
            var linkElement = this.nextSibling.getElementsByTagName('a')[0];
            var linkWording = window.Bein.module.optaRightrail.linkButtonTrans['results'][Bein.lang];
            var replaceStr = '/football/' + league + '/match-center-live';
           
           if (league == "all-competitions") { //if "all competitions" selected...
                var compHeader = this.parentElement.previousSibling.getElementsByTagName('td')[0];
                if (!!compHeader) {
                    if (compHeader.className.substring(0, 5) == "comp-") { // ...get competition ID directly from widget...
                        var optaCompID = compHeader.className.substring(5);
                        var foundLeague = $(".opta-competitions-select").find('[data-comp-id="'+optaCompID+'"]').data('name'); // ...and find competition slug in dropdown
                        if (!!foundLeague) {
                        	var replaceStr = '/football/' + foundLeague + '/match-center-live';
                        }    
                    }
                    else {
                    	return;
                    }
                }
           }
           
            if (linkElement) {
              linkElement.href = linkElement.href.replace('/matchlink?', replaceStr).replace(/(season\=)|(\&competition\=)|(\&match\=)/g, '/').replace('?', '');
              
              if (this.querySelector('.link-button') === null) {
                var linkButton = document.createElement("a");
                linkButton.href = linkElement.href;
                linkButton.textContent = linkWording;
                linkButton.className = 'link-button';
                this.lastChild.appendChild(linkButton);
                
                /* also make match score clickable*/
                var scoreElements = this.getElementsByClassName('score');
                if (!!scoreElements) {
                  for(var i=0; i<scoreElements.length; i++) {
                      var scoreLink = document.createElement("a");
                      scoreLink.href = linkElement.href;
                      scoreLink.setAttribute('title', linkWording);
                      scoreLink.textContent = $(scoreElements[i]).text();
                      scoreElements[i].innerHTML = "";
                      scoreElements[i].appendChild(scoreLink);
                  }
                }
              }
              linkElement.innerHTML = linkWording;
            }

          });
        },
        changeWordingNoLiveGame = function(){   
			$("#opta-widget-idx-livescore > div.opta-empty > p").text(window.Bein.module.optaRightrail.noLiveGameNotice[Bein.lang]);
        },
        switchTabsIfNoLiveGame = function(){   
          if (!tabsSwitchedOnLoad) {
            var isLiveTabSelected = $('.sc-live.active')[0];
            if (isLiveTabSelected) {
              var liveWidgetEmpty = $("#opta-widget-idx-livescore > h2.opta-empty")[0];
              if (liveWidgetEmpty) {
                $('#scores-subnav .sc-res').click();
                 tabsSwitchedOnLoad = true;
              }
            }
          }  
        },
        renderLiveScoresCount = function() {
        	var liveScoresOptaWidget = $('#opta-widget-idx-livescore'),
            	liveScoresCount = $('.live-scores-count');
        	if(liveScoresOptaWidget.length) {
            	var liveGamesCount = liveScoresOptaWidget.find('tr.scoreline').length,
                liveTab = liveScoresCount.parent()[0];
            	liveScoresCount.text('(' + liveGamesCount + ')');
                if(liveGamesCount > 0) {
                  liveTab.className = liveTab.className + ' highlighted';
                } else {
                  liveTab.className = liveTab.className.replace('highlighted','');
                }
            }
            liveScoresCount.addClass('scores-count-visible');
        };
        window._optaParams.callbacks.push(changeMatchLinks);
        window._optaParams.callbacks.push(switchTabsIfNoLiveGame);
        window._optaParams.callbacks.push(changeWordingNoLiveGame);
        window._optaParams.callbacks.push(renderLiveScoresCount);

      }
    }
  };
$(function() {
	// short fix for damn Opta which screwes data prototype with its custom junk
  if(!/\/connect.*/.test(window.location.pathname)){
  	window.Bein.module.optaRightrail.init();
  }
});
/*global $:false*/
/*jshint strict:true, camelcase:true, curly:true, eqeqeq:true, immed:true, indent:2, latedef:true, newcap:true, noarg:true, noempty:true, nonew:true, quotmark:single, undef:true, unused:true, trailing:true */
(function (window, document) {
  'use strict';
  window.Bein.module.forgottenForms = {

    messages : {
      email : {
        required : '?II? C?E??I C?C??E????',
        email : 'C?E??I ???E???? U?? ????',
        usernotfound : '?? ??? E??I???C E?I?I ??CE? ??? ??C C?E??I C????E???? ',
        mailnotfound : '?? ??? E??I???C E?I?I ??CE? ??? ??C C?E??I C????E???? '
      }
    },
    rules : {
      email : {
        required : true,
        email : true
      }
    },

    // forgotten username form
    validateForgottenUsername : function ($form) {
      $form.performValidator({
        rules : {
          'recoveryusername.email' : this.rules.email
        },
        messages : {
          'recoveryusername.email' : this.messages.email
        },
        submitHandler : {
          'url' : '/system/recovery/username',
          'fields' : ['recoveryusername.email'],
          'onSuccess' : window.Bein.module.forgottenForms.forgottenUsernameSuccess
        }
      });
    },

    // forgotten username success
    forgottenUsernameSuccess : function ($form) {
      $form.parent().find('.success').removeClass('hidden');
      $form.remove();
    },

    // forgotten password form
    validateForgottenPassword : function ($form) {
      $form.performValidator({
        rules : {
          'email' : this.rules.email
        },
        messages : {
          'email' : this.messages.email
        },
        submitHandler : {
          'url' : '/system/recovery/passwordtoken',
          'fields' : ['email', 'url'],
          'onSuccess' : window.Bein.module.forgottenForms.forgottenPasswordSuccess
        }
      });
    },

    // forgotten password success
    forgottenPasswordSuccess : function ($form) {
      $form.parent().find('.success').removeClass('hidden');
      $form.remove();
    },

    // validating forms
    validateForms : function () {
      this.validateForgottenUsername($('.forgottenUsername form'));
      this.validateForgottenPassword($('.forgottenPassword form'));
    }
  };

  $(document).ready(function () {
    window.Bein.module.forgottenForms.validateForms();
  });

})(window, document);

/**
 * Logout functionality
 */
var logoutInit = function () {
    var logoutWrapper = (Bein.device === 'phone') ? $('.logout.gr-mobile') : $('.gr-desktop .logout');
    var	logoutButton = logoutWrapper.children('a');
    logoutWrapper.hide();
    if (perform && perform.isLoggedIn()) {
    	logoutWrapper.show();
        logoutButton.on('click', function () {
        	perform.logout();
        });
    }
}
$('document').ready(function () {
	logoutInit();
});/*global $:false, beIn:false*/
/*jshint strict:true, camelcase:true, curly:true, eqeqeq:true, immed:true, indent:2, latedef:true, newcap:true, noarg:true, noempty:true, nonew:true, quotmark:single, undef:true, unused:true, trailing:true */

(function (window, document) {
  'use strict';
  window.Bein.module.video = {

    drawVideo : function (type, uuid, paid, geoblocked) {

      var canLoad = true;
      if (paid == 1 && Bein.user.isSubscribed === false) {
        canLoad = false;
        if (Bein.device !== 'phone') {
          $('#subscribe-banner').jqm({modal: true});
    	  $('#subscribe-banner').jqmShow();         
        }
      }
      
      $("#geoblocked").hide();
      if (geoblocked == true) {
      	var access = new checkAccessByCountry();
    	if(access.init(uuid) === "blocked") {
        	canLoad = false;
            $('#video-body').html("");           
        }
      }
      
      if (canLoad) {
        var url = '/ajax/video/' + type + '/' + uuid;
        window.Bein.module.dynamic.getData(
          url,
          function (result, xml) {
            if(result === true) {
              $('#video-body').html($(xml).find('body').text());
                // add article uuid into the URI                                                                                                                                                                
              if(typeof window.history === "object" && typeof window.history.pushState === "function"){
                var filter = location.pathname.match("/videos/(\\w*)");
                if (filter === null) {
                  var path = "/videos/all/"+uuid;
                } else {
                  var path = "/videos/" + filter[1] + "/" + uuid;
                }
                window.history.pushState({},uuid, path);
      		  }
            }
          }
        );
      }
    },
    
    initScrollers : function () {
      if ($('.lt-ie9').length == 0) {
        window.scrollers = []; // Assistive variable for setting multiple variables and making them visible from outer world
        var $scrollWrappers = $('.scroll-wrapper');
        $scrollWrappers.each(function(i) {
          // Set start position to negative of h-scroll for arabic version
          var $currentScroller = $(this).find('.h-scroll'),
          // Hack for arabic scrolling - start at -width of scroller
          startX = (Bein.lang === "ar") ? $currentScroller.width()*(-1) : 0;
          scrollers[this.getAttribute('id')] = new iScroll(this.getAttribute('id'), {
            snap: true,
            momentum: false,
            x: startX,
            hScrollbar: false,
            vScroll: false,
            onScrollEnd: function () {
              var element = this.wrapper;
              var prevActive = element.parentNode.getElementsByClassName('active')[0];
              prevActive.className = '';
              element.parentNode.querySelector('li:nth-child(' + (parseInt(this.currPageX + 1)) + ')').className = 'active';
            } 
          }); // scrollers[]
          // Hack for arabic scrolling (start at last page)
          if (Bein.lang === "ar") {
            scrollers[this.getAttribute('id')].scrollToPage($currentScroller.find('.scroll-group').length);
          }
        }); // scrollwrapers.each()
        
        $('.videos').on('click', '.indicator > li', function(event) {
          event.stopPropagation();
          event.preventDefault();
          var page = parseInt(this.getAttribute('data-page'));
          var wrapId = $(this.parentElement.parentElement).find('.scroll-wrapper').attr('id');
          scrollers[wrapId].scrollToPage(page);
        });  
        
      } else { // lt-ie9 IF
        $('.videos').on('click', '.indicator > li', function(event) {
          event.stopPropagation();
          event.preventDefault();
          var position =  this.getAttribute('data-page')*650*(-1);
          $(this.parentElement.parentElement).find('.h-scroll').css('margin-left', position+'px');
          $(this.parentNode).find('.active').removeClass('active');
          this.className = 'active';
        });

        $('.videos .indicator li:last-child').click();
      }
    }

  };
  
  $(document).ready(function () {
    if (typeof BeinInitVideoPagination !== 'undefined') {
      if (BeinInitVideoPagination == true) {
        if (Bein.device === 'phone') {
          $('.h-scroll').each(function () {
            this.style.width = '100%'
          });
        } else {
          window.Bein.module.video.initScrollers();
        }          
      }
    }
    
    // hide empty sections
    $('.videos').has('.no-content').addClass('hidden');
    
    $('.video-list article a').on("click", function(event) {
      event.preventDefault();
    });
    
    $('#video-body').on('click', '.share-it a', function() {
    var NWin = window.open($(this).prop('href'), '', 'scrollbars=no,resizable=no,height=500,width=700');
    if (window.focus) {
      NWin.focus();
    }
    return false;
   });
    
  });  
})(window, document);/*global $:false*/
/*jshint strict:true, camelcase:true, curly:true, eqeqeq:true, immed:true, indent:2, latedef:true, newcap:true, noarg:true, noempty:true, nonew:true, quotmark:single, undef:true, unused:true, trailing:true */
(function (window, document, undefined) {
  'use strict';
  window.Bein.module.popover = {
    
    /**
     * Popover initialization
     */
    init : function () {
  
      // preferred language popover
      if (window.location.hash === '#lang-change' && window.Bein.settings.popover && window.Bein.settings.language === '') {
    
        $('.pref-lang').removeClass('hidden');
        $('.pref-lang .close').click(function (event) {
          event.preventDefault();
          $('.pref-lang').fadeOut('fast');
        });
        
        $('#pref-lang-on').click(function () {
          window.Bein.settings.updateCookie('lang=ar');
          $('.pref-lang p').text('C???E?E E? E?I?I ??? C??UE ??UE ??C??E ??');
          $('.pref-lang .input-wrapper').remove();
          $('.pref-lang').delay(4000).fadeOut('fast');
        });
        $('#pref-lang-off').click(function () {
          window.Bein.settings.updateCookie('po=0');
          $('.pref-lang').fadeOut('fast');
        });

      }

    }
  
  };
  
})(this, this.document);/*global $:false*/
/*jshint strict:true, camelcase:true, curly:true, eqeqeq:true, immed:true, indent:2, latedef:true, newcap:true, noarg:true, noempty:true, nonew:true, quotmark:single, undef:true, unused:true, trailing:true */
(function (window, document, undefined) {
  'use strict';
  window.Bein.module.timezone = {
    
    /**
     * Popover initialization
     */
    init : function () {
  
      // set moment.js language
      moment.lang('ar');
      
      // prevent default behaviour for link
      $('.timezone-select a').click(function(e) {
      
        e.preventDefault();
        
      });
      
      // adjust the width of the dropdown
      var dropdownWidth = $('#timezone').width();
      var timezoneWidth = $('.timezone-select a').width();
      
      if (dropdownWidth < timezoneWidth) {
        $('#timezone').width(timezoneWidth);
      }
      
      // timezone settings
      if (window.Bein.settings.timezone !== '') {
      
        $('.timezone-select a').html($('#timezone option[value="' + window.Bein.settings.timezone + '"]').text().replace(/ \[.*?\]/,'') + ' &#x25BE;');
        $('.timezone-select a').addClass('selected');
        
      }
      
      // fix for the first option selection issue
      $('#timezone').on('focus', function () {
      
        this.selectedIndex = -1;
        
      });
      
      // timezone change
      $('#timezone').on('change', function () {
        
        if ($(this).val() !== '') {

          var cookie = window.Bein.settings.getCookie();
          var value = (window.Bein.module.helpers.url.getParam('tz', cookie) === '') ? 'tz=' + $(this).val() : cookie.replace(window.Bein.module.helpers.url.getParam('tz', cookie), $(this).val());
          var tzOffset = -(moment().tz($(this).val()).zone()/60);

          // update value
          window.Bein.settings.timezone = $(this).val();
          $('.timezone-select a').html($('#timezone option[value="' + window.Bein.settings.timezone + '"]').text().replace(/ \[.*?\]/,'') + ' &#x25BE;');
          $('.timezone-select a').addClass('selected');
          $('body').trigger('cancelActiveState');
          
          // set cookie
          window.Bein.settings.updateCookie(value);
          
          // update times
          Helpers.dateFormater.init('ar');
          
          // Object.keys fix for IE8
          if (!Object.keys) {
            Object.keys = function(obj) {
              var keys = [];
              
              for (var i in obj) {
                if (obj.hasOwnProperty(i)) {
                  keys.push(i);
                }
              }
              
              return keys;
            };
          }
          
          // reload opta widgets
          if (Object.keys($jqOpta.widgets).length !== 0) {
          
            var competition = $jqOpta.widgets[Object.keys($jqOpta.widgets)[0]].optaWidget.data.competition;
            var season = $jqOpta.widgets[Object.keys($jqOpta.widgets)[0]].optaWidget.data.season;
            
            $('.standings-body,.fixtures-body,.results-body,.scores-fixtures,.scores-results,.scores-standings,.scores-stats').empty();
            
            $('.standings-body').html('<opta widget="standings" sport="football" competition="'+ competition +'" season="'+ season +'" tabbed_groups="false" show_layout="default" sorting="false" show_image="false" opta_logo="false" team_name="short" live="false" narrow_limit="400"></opta>');
            $('.fixtures-body').html('<opta widget="fixtures_plus" sport="football" days_ahead="30" competition="'+ competition +'" season="'+ season +'" status="prematch" live="false" order_by="date_asc" grouping="date" show_grouping="true" tabbed_groupings="false" month_date_format="MMMM yyyy" show_sub_grouping="true" pre_match="false" show_crest="false" date_format="dddd d MMMM" date_time="false" competition_name="full" opta_logo="false" narrow_limit="330" template="classic"></opta>');
            $('.results-body').html('<opta widget="fixtures_plus" sport="football" days_before="30" competition="'+ competition +'" season="'+ season +'" status="fulltime" live="false" order_by="date_desc" group_by_date="false" grouping="date" show_grouping="true" tabbed_groupings="false" month_date_format="MMMM yyyy" show_sub_grouping="true"  show_crest="false" date_format="dddd d MMMM" date_time="false" competition_name="full" opta_logo="false" narrow_limit="330" template="classic"></opta>');
            $('.scores-fixtures').html('<opta widget="fixtures_plus" sport="football" competition="'+ competition +'" season="'+ season +'" id_suffix="fixtures" status="prematch" live="true" start_current_matchday="false" order_by="date_asc" grouping="date" show_grouping="true" tabbed_groupings="false" month_date_format="MMMM yyyy" show_sub_grouping="true"  match_link="/matchlink" pre_match="7200" show_crest="true" date_format="dddd d MMMM" date_time="false" competition_name="full" opta_logo="false" narrow_limit="330" template="classic"></opta>');
            $('.scores-results').html('<opta widget="fixtures_plus" sport="football" competition="'+ competition +'" season="'+ season +'" id_suffix="results" status="fulltime" live="true" start_current_matchday="false" order_by="date_asc" grouping="date" show_grouping="true" tabbed_groupings="false" month_date_format="MMMM yyyy" show_sub_grouping="true" match_link="/matchlink" show_crest="true" date_format="dddd d MMMM" date_time="false" competition_name="full" opta_logo="false" narrow_limit="330" template="classic"><opta widget="match_summary" sport="football" competition="" season="" match="" show_venue="true" show_attendance="true" show_referee="true" show_scorers="true" show_cards="true" show_subs="true" live=""></opta></opta>');
            $('.scores-standings').html('<opta widget="standings" sport="football" competition="'+ competition +'" season="'+ season +'" id_suffix="standings" tabbed_groups="true" show_layout="full" sorting="false" show_image="true" opta_logo="false" team_name="normal" live="false" narrow_limit="100"></opta>');
            $('.scores-stats').html('<opta widget="playerranking" sport="football" competition="'+ competition +'" season="'+ season +'" id_suffix="stats" category="all" vertical="true" coverage="complete" show_image="true" opta_logo="false" narrow_limit="100" display="15" output="table" navigate="select"></opta>');
            
            // Set timezone to timezone and amend it according to summer/winter time based on uk server time
            _optaParams.timezone = tzOffset  - ("+0000" === "+0100" ? 1 : 0);
            
            $jqOpta.reload();
            
          }
          
        }
        
      });

    }

  
  };
  
})(this, this.document);
window.Bein.module.datePick =  {
  settings: {
    selectedDay: new Date(),
    changed: false
  },
  init: function() {
    // init calendar picker widget
    Date.monthNames = [];
      Date.monthNames.push('??C??');
      Date.monthNames.push('?E?C??');
      Date.monthNames.push('?C??');
      Date.monthNames.push('?E???');
      Date.monthNames.push('?C??');
      Date.monthNames.push('?????');
      Date.monthNames.push('?????');
      Date.monthNames.push('?U???');
      Date.monthNames.push('?EE?E?');
      Date.monthNames.push('??E?E?');
      Date.monthNames.push('????E?');
      Date.monthNames.push('I???E?');
    var self = this;
    $('#calendarPicker').datePicker({
      inline: true,
      startDate: '01/01/2010'
    });
    
    $('#calendarPicker').bind('dateSelected', function(event, startDay) {
      self.settings.selectedDay = startDay;
      self.settings.changed = true;
      self.generateOpta(startDay);
    });
    $('#calendarPicker').on('dpMonthChanged', function(event, month, year) {
      var startDay = new Date(year, month, 1);
      var endDay = new Date(year, month+1, 0); // 0th day of next month = last day of this month
      self.settings.selectedDay = startDay;
      self.settings.changed = true;
      self.generateOpta(startDay, endDay);
    });
    $('#calendarPicker h2').on('click', function() {
      var day = Bein.module.datePick.settings.selectedDay;
      var startDay = new Date(day.getFullYear(), day.getMonth(), 1);
      var endDay = new Date(day.getFullYear(), day.getMonth() + 1, 0);
      self.settings.changed = false;
      self.generateOpta(startDay, endDay);
    });
  },
  generateOpta: function(startDay, endDay) {
    
    var competition, season, selectedTab, tag, status, order, pre_match, id_suffix, startDay, endDay;
    var compSeasonData = $('.opta-competitions-select').find('option:selected').data();
    competition = compSeasonData.compId;
    season = compSeasonData.seasonId;
    selectedTab = window.tabData || 'scores-fixtures';
    
    if (selectedTab === 'scores-fixtures') {
      status = 'prematch';
      order = 'date_asc';
      pre_match = 'true';
      id_suffix = 'fixtures';
    }else {
      status = 'fulltime';
      order = 'date_desc';
      pre_match = 'false';
      id_suffix = 'results';
    }
    endDay = this.formatDate((endDay === undefined) ? startDay : endDay);
    startDay = this.formatDate(startDay);

    tag = '<opta widget="fixtures_plus" sport="football" competition="'+ competition +'" season="'+ season +'" status="' + status + '" id_suffix="' + id_suffix + '" date_from="'+ startDay +'" date_to="'+ endDay +'" live="true" order_by="' + order + '"  grouping="date" show_grouping="true" tabbed_groupings="false" month_date_format="MMMM yyyy" show_sub_grouping="true" match_link="/matchlink" show_crest="true" date_format="dddd d MMMM" date_time="false" competition_name="full" opta_logo="false"  pre_match="7200"  narrow_limit="400" template="classic"><opta widget="match_summary" sport="football" competition="" season="" match="" show_venue="true" show_attendance="true" show_referee="true" show_scorers="true" show_cards="true" show_subs="true" live=""></opta></opta>';
   
    $('.'+selectedTab).html(tag);
    $jqOpta.reload();
  },
  numberZeroPad: function(number) {
      return number <= 9 ? '0'+number : number;      
  },
  formatDate: function(date) {
    return date.getFullYear() + '-' + this.numberZeroPad(date.getMonth() + 1) + '-' + this.numberZeroPad(date.getDate());
  }
};

$(function() {
  Bein.module.datePick.init();
});//loading content of sidebar epg
function pad(n){return n<10 ? '0'+n : n}
 
 var ajaxRequest = function(url,onload,onerror){
  var xhr = new XMLHttpRequest();
  try{
    xhr.open("GET",url,true);	
    
    if(typeof xhr.onload !== "undefined"){
      xhr.onload = function(){
        if(typeof onload === "function"){	
          onload(this);					
        }
      };
    }else{
      xhr.onreadystatechange = function(){
          if(this.readyState == 4 && (this.status == 200 || this.status == 301)){
              if(typeof onload === "function"){	
                onload(this);					
              }
          }        
      }
    }
    
    if(typeof onerror === "function"){
      xhr.onerror = xhr.onabort = xhr.ontimeout = onerror;
    }
    xhr.send();
  }catch(e){
    console.log("Something went wrong with call to: "+url,e);
    if(typeof onerror === "function"){
      onerror(e);
    }
  }
};

/* IMPORTANT: !!!! 
 ** Use "/generated/schedule" in ajaxRequest when you need AJS data NOT CACHED with cron job. */

  window.beIN = {
 	loadEpgWidget : function () {
  		ajaxRequest(
			 "dynamicxml/beINSPORT/mena/schedule-short-ar.xml",
            
			function (xhr) {
            		// IE8 does need to use innerText instead of textContent
            		var textContent = typeof document.body === "undefined" ? "innerText" : "textContent";
            
  					var currentTime = new Date();
                    var milisecondsOffset = (currentTime.getTimezoneOffset() + ((parseInt(+0000,10)/64*60)+60))*60;
                    var currentTimestamp = parseInt(new Date().getTime()) + milisecondsOffset;
                          
					var channelItems = xhr.responseXML.getElementsByTagName('channel');
                    var epgCarouselMarkup =  document.getElementById('epg-sidebar');
                    
					for (var count = 0; count < channelItems.length; count++) {
                          
                           var channelEvents = channelItems[count].getElementsByTagName('event');
                           var channelCode = channelItems[count].getAttribute('ajsCode');
						 
                           for (var i = 0; i < channelEvents.length; i++) {
                                  var currentItem = channelEvents[i];
                                  
                                  if ( currentItem && (currentItem.getElementsByTagName('startTime')[0]) && (currentItem.getElementsByTagName('endTime')[0]) && (( new Date(currentItem.getElementsByTagName('startTime')[0].firstChild.nodeValue).getTime()) < currentTimestamp) && (( new Date(currentItem.getElementsByTagName('endTime')[0].firstChild.nodeValue).getTime()) >= currentTimestamp) ) {
                                  
                                  	var currentSection = document.getElementById('channel-'+channelCode);
                                  	currentSection.getElementsByClassName('current-program-title')[0][textContent] = currentItem.getElementsByTagName('title')[0].firstChild.nodeValue;
                                  
                                  	var nextItem = channelEvents[i+1];
                                    if (nextItem) {
										currentSection.getElementsByClassName('next-program-title')[0][textContent] = nextItem.getElementsByTagName('title')[0].firstChild.nodeValue; 
                                        currentSection.getElementsByTagName('time')[0].setAttribute('data-timestamp',new Date(nextItem.getElementsByTagName('startTime')[0].firstChild.nodeValue).getTime()/1000);
                                        currentSection.getElementsByTagName('time')[0].setAttribute('datetime',new Date(nextItem.getElementsByTagName('startTime')[0].firstChild.nodeValue));
                                        }
                                                               
                                    break;
                                    }  
                           }
					}
                    
                    window.Helpers.dateFormater.init('ar');
                    document.querySelector('#epg-sidebar .carousel').className = "carousel"; //remove class "loader", keep class "carousel"
			}
       );
  	}
	
 }
 
 
$(document).ready(function () {
   
if(document.getElementById('epg-sidebar') !== null && Bein.device != "mobile" ){
   window.beIN.loadEpgWidget();
      
   $("#epg-sidebar .next").click(function(){
    	$("#epg-sidebar .program-list").stop(false,true).animate({scrollLeft: '+=' + '300'}, 500, function() { disableEnable(); } );
    });

   $("#epg-sidebar .previous").click(function(){
		$("#epg-sidebar .program-list").stop(false,true).animate({scrollLeft: '-=' + '300'}, 500, function() { disableEnable(); } );  	
	});
   
    var disableEnable = function() {
		if ($('#epg-sidebar ul').position().left == 0) {
    		$('#epg-sidebar .previous').addClass('disabled');
    	}
        else {
        	$('#epg-sidebar .previous').removeClass('disabled');
        }
        
        if ($('#epg-sidebar ul').position().left == -5100) {
    		$('#epg-sidebar .next').addClass('disabled');
    	}
        else {
        	$('#epg-sidebar .next').removeClass('disabled');
        }
	}
   
}
     });
Bein.newsWidget = {
	wrapper : document.getElementById('newsWidget'),
	androidPhone : /android.+phone/.test(document.getElementsByTagName("html")[0].className)
};

$(function() {  
  
  $('#newsWidget').on('click', '#newsWidgetChannel a', function(event) {  	
  	event.preventDefault();
    
    var item_clicked = $(this);
    
  	if (Bein.newsWidget.androidPhone){ 	
    	toggleSidebarMenu(true);
    }
    else {
    	$('#newsWidgetChannel').hide(150);
	}
    $('#newsWidget').find('h1 > a').attr('src',item_clicked.attr('data-url')).text(item_clicked.attr('data-heading'));
     
    $('.widgetContent').fadeTo(400, 0.2).load('/ajax/newswire/channel/' + $(this).attr('data-channel'), function(){                
        $(this).fadeTo(300,1);
        removeFeaturedArticles(featureArticlesUuid);
    });
  });

  $('#newsWidget').on('click', 'header #channelMenu', function(e) {
  	e.stopPropagation();
    
    if (Bein.newsWidget.androidPhone) { 	
    	toggleSidebarMenu();
    }
    else {
    	$('#newsWidgetChannel').toggle(150);
    }
        $(this).toggleClass('opened');
  });
  
    $('.mobile #newsWidget').on('mouseleave', function() {
      if (Bein.newsWidget.androidPhone) { 	
    	toggleSidebarMenu(true);
      }
      else {
    	$('#newsWidgetChannel').hide(150);
      }
        $(this).removeClass('opened');
  });
  
  
  function toggleSidebarMenu(hideOnly) {
     if (typeof hideOnly === "undefined") {
       var displayValue = (countClicks % 2 === 0) ? 'none' : 'block';
       document.querySelector('#newsWidgetChannel').style.display=displayValue;
     }
    else {
      document.querySelector('#newsWidgetChannel').style.display='none';
    }
    countClicks++;
  }
  
  /*
  remove duplicate articles contained also in Feature Asset 
  */
  
  var featureArticlesUuid = document.getElementById('featureArticlesId');
  featureArticlesUuid = (featureArticlesUuid !== null) ? featureArticlesUuid.value : "";

  function replacer(match, p1, p2, offset, string) {
    return ',article[data-uuid="' + p2 + '"]';
  }
  featureArticlesUuid = featureArticlesUuid.replace(/([^\w])(\w+)/g, replacer).substring(1);
  
  removeFeaturedArticles(featureArticlesUuid);
  
  function removeFeaturedArticles(selector) {
     var wrapper = Bein.newsWidget.wrapper;
     
     $(wrapper).find(selector).remove();
     //$(wrapper).find(selector).css('background-color','red');
  	 var articles = $(wrapper).find('article');
  	 articles.slice( 8 , articles.length).remove();
     //articles.slice( 8 , articles.length).css('background-color','blue');
  }
  
  
});

$(document).ready(function() {
  var competitions = $('.opta-select-inner div');
  var scoresCompetitions = $('.opta-competitions-select option')

  if(window.Bein.lang == "ar") {
    var compPositionNumber = competitions.length-1;
    var scoresPositionNumber = scoresCompetitions.length-1;
  }
  else {
    var compPositionNumber = 0;
    var scoresPositionNumber = 0;
  }
  
  $(".opta-tabs ul li").click(function () {
    
    var tabData = $(this).data("tab-id");
    
    $(this).addClass('active button-gradient').siblings().removeClass('active button-gradient');
    $(".opta-content").hide();
    $(".opta-content."+tabData).show();
   
  });
  
  var width = 0;
  $('.competition-unit').each(function() {
    width += $(this).outerWidth(true);
  });
  $('.opta-select-inner').css('width', width);
  
  $(".opta-widget-arrow").click(function (e) {

    if ($(this).hasClass("right") && compPositionNumber != competitions.length-1) {
    
      compPositionNumber++;
      // Hack for IE
      var dir = (typeof document.documentMode === 'number' && Bein.lang === 'ar') ? '-=' : '+=';
    } else if ($(this).hasClass("left") && compPositionNumber != 0) {
      compPositionNumber--;
      // Hack for IE
      var dir = (typeof document.documentMode === 'number' && Bein.lang === 'ar') ? '+=' : '-=';
    }
    else { return; }
    var competition = $('.competition-unit-pos-' + compPositionNumber).data('comp-id');
    var season =  $('.competition-unit-pos-' + compPositionNumber).data('season-id');

    $(".opta-select-outer").stop(false,true).animate({scrollLeft: dir + '240'}, 500);
    
    $(".standings-body,.fixtures-body,.results-body").html("");
    
    $(".standings-body").html('<opta widget="standings" sport="football" competition="'+ competition +'" season="'+ season +'" tabbed_groups="false" show_layout="default" sorting="false" show_image="false" opta_logo="false" team_name="short" live="true" narrow_limit="400"></opta>');
    $(".fixtures-body").html('<opta widget="fixtures_plus" sport="football" days_ahead="90" competition="'+ competition +'" season="'+ season +'" status="prematch" live="true" order_by="date_asc" start_current_matchday="false" order_by="date_asc" grouping="date" show_grouping="true" tabbed_groupings="false" month_date_format="MMMM" show_sub_grouping="true" pre_match="false" show_crest="false" date_format="dddd d MMMM" date_time="false"  opta_logo="false" narrow_limit="0" template="classic" team_name="short"></opta>');
    $(".results-body").html('<opta widget="fixtures_plus" sport="football" days_before="90" competition="'+ competition +'" season="'+ season +'" status="fulltime"  order_by="date_desc" live="true" start_current_matchday="false" order_by="date_asc" grouping="date" show_grouping="true" tabbed_groupings="false" month_date_format="MMMM" show_sub_grouping="true" pre_match="false" show_crest="false" date_time="false" date_format="dddd d MMMM" opta_logo="false" narrow_limit="0" template="classic" team_name="short"></opta>');
   
    $jqOpta.reload();
  });
  
  /* 
  SCORES PAGE WIDGETS SWITCHIG LOGIC 
  */
  
  var fallbackCompetitonData = $(".opta-competitions-select").find('[data-position="1"]').data();
  $("#scores-subnav li").click(function () {
    
    var data = $(this).data();
    var compSeasonData = $('.opta-competitions-select').find('option:selected').data();  
    
    if (compSeasonData.position == "0") {
    	compSeasonData = fallbackCompetitonData;
    } else {
    	fallbackCompetitonData = compSeasonData;	
    }
    
    var dateRange = getStartEndDay();
    // We set tabData to global namespace to make it visible for datePick module
    window.tabData = data.tabId;
    
    if (tabData === 'scores-standings') {
      $('.datePick').hide();
      $('#scores-standings-tabs').css('display', 'table');
      $('#scores-stats-tabs').hide();
    }else if (tabData === 'scores-stats') {
      $('.datePick').hide();
      $('#scores-standings-tabs').hide();
      $('#scores-stats-tabs').css('display', 'table');
    }else if (tabData === 'scores-live') {
      $('.datePick').hide();
      $('#scores-standings-tabs').hide();
      $('#scores-stats-tabs').hide();
    }else {
      $('.datePick').show();
      $('#scores-standings-tabs').hide();
      $('#scores-stats-tabs').hide()
    }
    $('#' + tabData + '-tabs li').removeClass('active');
    $('#' + tabData + '-tabs li:eq(0)').addClass('active');
    
    
    $(this).addClass('active').siblings().removeClass('active button-gradient');
    $(".scores-opta").removeClass('active');
    $(".scores-opta."+tabData).addClass('active');
    
    if (tabData != 'scores-live') {
 	     // set "All competitons" option disabled 
         // set current competition selected
         $(".opta-competitions-select").find('[data-position="0"]').prop('disabled', true);
         $(".opta-competitions-select").find('[data-position="'+compSeasonData.position+'"]').prop('selected', true);

    } else {
    	//set "All competitons" option selected
         $(".opta-competitions-select").find('[data-position="0"]').prop('selected', true).prop('disabled', false);
         compSeasonData = $('.opta-competitions-select option:eq(0)').data(); 
    }
	renderOptaTags(data.tabId, data.widget, compSeasonData.compId, compSeasonData.seasonId, dateRange.start, dateRange.end);    
    ga('send', 'pageview'); //set new pageview in google analytics
  });
  $('.scores-tabs li').on('click', function() {
    var tag;
    var data = $(this).data();
    var compSeasonData = $('.opta-competitions-select').find('option:selected').data();
    var dateRange = getStartEndDay();
    $('#' + data.tabId + '-tabs li').removeClass('active');
    $(this).addClass('active');
    
    renderOptaTags(data.tabId, data.widget, compSeasonData.compId, compSeasonData.seasonId, dateRange.start, dateRange.end);
  });
    
  $('.opta-competitions-select').change(function(){
    var elemData = $(this).find('option:selected').data();
    var subData = $('#scores-subnav li.active').data();
    var checkForStats = elemData.statsCheck;
    var dateRange = getStartEndDay();
    
    if (checkForStats === false) {
      $('.sc-stats').css('display', 'none');
      if (Bein.device !== 'phone') {
        $('#scores-subnav').css('width', '397px');
      }
    } else {
      $('.sc-stats').css('display', 'inline-table');
      if (Bein.device !== 'phone') {
        $('#scores-subnav').css('width', '485px');
      }  
    }
    
   renderOptaTags(subData.tabId, subData.widget, elemData.compId, elemData.seasonId, dateRange.start, dateRange.end);

  });
  
   $('#livescore-competitions-select').change(function(){
	var elemData = $(this).find('option:selected').data();
    var dateRange = getStartEndDay();
    renderOptaTags("scores-live", "live", elemData.compId, elemData.seasonId, dateRange.start, dateRange.end);
  });
  
 
  /* ---- Match center specific functionality ---- */
  $('.match-live-pick li').on('click', function() {
    var data = $('#widget-content').data(),
        elemData = $(this).data();
    
    if (elemData.tab === true) {
      $('.match-tabs li').removeClass('active');
      $(this).addClass('active');
      if (elemData.widget === 'formation') {
        $('.widgets-pick').show();
      } else {
        $('.widgets-pick').hide();
      }
    }
    renderOptaTags('widget-content', elemData.widget, data.competition, data.season, null, null, data.match);
  });
  /* ---- Sidebar opta widgets accordion ---- */
  $('.accordionButton').on('click', function() {
    $(this).next().toggleClass('unhide');
  });
  
  /* ----------------------- FUNCTIONS ---------------------------- */
  /* Function getStartEndDay in coexistence with datePick.js module */
  function getStartEndDay() {
    var startDay = new Date();
    // Set startDay to first day of month
    startDay.setDate(1);
    var endDay = new Date(startDay.getFullYear(), startDay.getMonth() + 1, 0);
    
    if (Bein.module.datePick && Bein.module.datePick.settings.changed) {
      startDay = Bein.module.datePick.settings.selectedDay;
      if (startDay.getDate() !== 1) {
        endDay = startDay;
      }else {
        endDay = new Date(startDay.getFullYear(), startDay.getMonth() + 1, 0);
      }     
    }
    startDay = Bein.module.datePick.formatDate(startDay);
    endDay = Bein.module.datePick.formatDate(endDay);
    return {start: startDay, end: endDay};
  }
  
  // Render opta tag, switch concrete widget and corresponding opta tag
  function renderOptaTags(tabId, widget, competition, season, startDay, endDay, match) {
    var tag;
    switch (widget) {
      case 'fixtures':
        tag = '<opta widget="fixtures_plus" sport="football" competition="'+ competition +'" season="'+ season +'" date_from="'+ startDay +'" date_to="'+ endDay +'"  id_suffix="fixtures" status="prematch" live="true" start_current_matchday="false" order_by="date_asc" grouping="date" show_grouping="true" tabbed_groupings="false" month_date_format="MMMM yyyy" show_sub_grouping="true"  match_link="/matchlink" pre_match="7200" show_crest="true" date_format="dddd d MMMM" date_time="false" competition_name="full" opta_logo="false" narrow_limit="330" template="classic"></opta>';
        break;
      case 'results':
        tag = '<opta widget="fixtures_plus" sport="football" competition="'+ competition +'" season="'+ season +'" id_suffix="results" date_from="'+ startDay +'" date_to="'+ endDay +'" status="fulltime" live="true" start_current_matchday="false" order_by="date_asc" grouping="date" show_grouping="true" tabbed_groupings="false" month_date_format="MMMM yyyy" show_sub_grouping="true" match_link="/matchlink" show_crest="true" date_format="dddd d MMMM" date_time="false" competition_name="full" opta_logo="false" narrow_limit="330" template="classic"><opta widget="match_summary" sport="football" competition="" season="" match="" show_venue="true" show_attendance="true" show_referee="true" show_scorers="true" show_cards="true" show_subs="true" live=""></opta></opta>';
        break;
      case 'live':
        tag = '<opta widget="fixtures_plus" sport="football" competition="'+ competition +'" season="'+ season +'" id_suffix="livescore"  status="live" live="true" start_current_matchday="true" order_by="date_asc" grouping="competition" show_grouping="true" tabbed_groupings="false" month_date_format="MMMM yyyy" show_sub_grouping="true" match_link="/matchlink" show_crest="true" date_format="dddd d MMMM" date_time="false" competition_name="full" opta_logo="false" narrow_limit="330" template="classic"><opta widget="match_summary" sport="football" competition="" season="" match="" show_venue="true" show_attendance="true" show_referee="true" show_scorers="true" show_cards="true" show_subs="true" live=""></opta></opta>';
        break; 
      case 'seasonstandings':
        tag = '<opta widget="seasonstandings" sport="football" competition="'+ competition +'" season="'+ season +'" show_team_list="true" preselected_only="false" show_crests="true" opta_logo="false" show_match_details="true" show_axis_labels="true" show_plot_points="false" plot_curves="false" animation_time="0.5" team_name="normal" narrow_limit="480"></opta>';
        break;
      case 'standings':
        tag = '<opta widget="standings" sport="football" competition="'+ competition +'" season="'+ season+'" tabbed_groups="true" show_layout="full" sorting="true" show_image="true" opta_logo="false" team_name="normal" live="true" narrow_limit="480"></opta>';
        break;
      case 'player':
        tag = '<opta widget="playerranking" sport="football" competition="'+ competition +'" season="'+ season +'" category="all" vertical="true" coverage="complete" show_image="true" opta_logo="false" narrow_limit="480" display="15" output="table" navigate="select"></opta>';
        break;
      case 'team':
        tag = '<opta widget="teamranking" sport="football" competition="'+ competition +'" season="'+ season +'" category="all" default_category="goals_for" output="barchart" vertical="false" coverage="complete" show_image="true" opta_logo="false" narrow_limit="480" display="10" navigate="select"></opta>';
        break;
      case 'head':
        tag = '<opta widget="playercompare" sport="football" sub="seasonal" select_comparison="2" change_team="true" player_names="full" show_image="true" coverage="complete" opta_logo="false" narrow_limit="480" live="true" template="classic" competition_p1="'+ competition +'" season_p1="'+ season +'" competition_p2="'+ competition +'" season_p2="'+ season +'" split_red_cards="false" prefill="false"></opta><opta widget="teamcompare" sport="football" select_comparison="2" show_image="true" opta_logo="false" narrow_limit="480" coverage="complete" competition1="'+ competition +'" season1="'+ season +'" competition2="'+ competition +'" season2="'+ season +'" split_red_cards="false"></opta>';
        break;
      case 'formation':
        tag = '<opta widget="formation" sport="football" competition="'+ competition +'" season="'+ season +'" match="'+ match +'" vertical="true" show_team_sheets="true" show_images="true" show_players="true" player_names="full" opta_logo="false" narrow_limit="480"></opta>';
        break;
      case 'averageposition':
        tag = '<opta widget="averageposition" sport="football" competition="'+ competition +'" season="'+ season +'" match="'+ match +'" vertical="true" live="true" show_team_sheets="true" show_images="true" player_names="initial" opta_logo="false" width="650" narrow_limit="480"></opta>';
        break;
      case 'heatmap':
        tag = '<opta widget="heatmap" sport="football" competition="'+ competition +'" season="'+ season +'" match="'+ match +'" id_profile="8" show_teams="both" player_names="full" width="650" height="300" live="true" opta_logo="false" narrow_limit="480"></opta>';
        break;
      case 'chalkboard':
        tag = '<opta widget="chalkboard" sport="football" competition="'+ competition +'" season="'+ season +'" match="'+ match +'" team="false"  player_names="full" zone="all" show_images="true" show_teams="both" show_events="true" show_time_controls="true" live="true" expand="default" opta_logo="false" narrow_limit="480"></opta>';
        break;
      case 'goalreplay':
        tag = '<opta widget="goalreplay" sport="football" competition="'+ competition +'" season="'+ season +'" match="'+ match +'" show_game_summary="true" show_team_crest="true" show_pitch_crest="true" show_player_image="false" show_event_list="true" animate="false" opta_logo="true" player_names="full" live="true"></opta>';
        break;
      case 'actionareas':
        tag = '<opta widget="actionareas" sport="football" competition="'+ competition +'" season="'+ season +'" match="'+ match +'" comp_name="short" team_names="short" show_crests="false" possession_bar="true" 5_min_splits="true" 15_min_splits="true" 45_min_splits="true" live="true" opta_logo="true"></opta>';
        break;
      case 'attackingthirds':
        tag = '<opta widget="attackingthirds" sport="football" competition="'+ competition +'" season="'+ season +'" match="'+ match +'" time_controls="both" change_team="true" live="true" opta_logo="false" narrow_limit="480"></opta>';
        break;
      case 'matchstats':
        tag = '<opta widget="matchstats" sport="football" competition="'+ competition +'" season="'+ season +'" match="'+ match +'" sub="teamstats" coverage="complete" show_image="true" show_captain="false" opta_logo="false" narrow_limit="480" live="true" player_names="full"></opta><opta widget="matchstats" sport="football" competition="'+ competition +'" season="'+ season +'" match="'+ match +'" sub="playerstats" coverage="complete" show_image="true" show_captain="false" opta_logo="false" narrow_limit="480" live="true" player_names="full"></opta>';
        break;
      case 'ticker':
        tag = '<opta widget="ticker" sport="football" competition="'+ competition +'" season="'+ season +'" opta_logo="false" show_cards="true" show_penalties="true" limit="0" competition_name="short" narrow_limit="480"></opta>';
        break;
    }
    $('.' + tabId).html(tag);
    $jqOpta.reload();
  }
});
$(document).ready(function() {  
	$("#epg-remote-control .next").click(function(){
    	$("#epg-remote-control .program-list").stop(false,true).animate({scrollLeft: '+=' + '211'}, 500);
    });

	$("#epg-remote-control .previous").click(function(){
		$("#epg-remote-control .program-list").stop(false,true).animate({scrollLeft: '-=' + '211'}, 500);
	});
  
	var channelViews = $('.channel-view'),
        channelButtons = $('.channel-lineup li a'),
        selectedChannel = '.' + $('.channel-lineup li .selected').attr('data-channel');
	$('.program-list').each(function() {
      	var width = 0;
      	$(this).children('ul').children('li').each(function() {
			width += $(this).outerWidth(true);
		});
      	$(this).children('ul').css('width', width);
	});
  
  	channelViews.hide();
  	$(selectedChannel).show();
  
	channelButtons.on('click', function () {
		var channelId = '.' + $(this).attr('data-channel');
		channelViews.hide();
        channelButtons.removeClass('selected');
		$(channelId).show();
      	$(this).addClass('selected');
	});

});
  /* Search */

$('.search-container').on('submit', '.search-input', function() {
  var formInput = $(this).find('input[type=text]').val().replace(/^\s+/, '').replace(/\s+$/, '').replace('/', '');
  if (formInput != '') {
  window.location.href = '/search/'+encodeURIComponent(formInput);
  }
  return false;
});
